Gemeinsame Nutzung Dienstprogramme Module über Python-Projekte
-
10-07-2019 - |
Frage
Was wäre die beste Verzeichnisstruktur Strategie sein, einen Versorgungsmodul über meinen Python-Projekte zu teilen? Da die gemeinsame Module mit neuen Funktionen aktualisiert würden möchte ich sie nicht in dem Python setzen Verzeichnis installieren.
project1/
project2/
sharedUtils/
Von project1 kann ich nicht verwenden „Import .. \ sharedUtils“, gibt es eine andere Art und Weise? Ich würde lieber nicht hart codieren die „sharedUtils“ location
Vielen Dank im Voraus
Lösung
Erstellen Sie ein separates eigenständiges Paket? Und steckt es in dem / site-packages Ihres Pythons installieren?
Es ist auch mein persönlicher Favorit, wenn es um Entwicklungsmodus kommt. Verwendung von symbolischen Links und / oder *.pth
Dateien
Andere Tipps
Angenommen, Sie sharedUtils/utils_foo
und sharedUtils/utils_bar
haben.
Sie könnten Ihre PYTHONPATH bearbeiten sharedUtils
zu schließen, so dass sie dann importieren in project1
und project2
mit
import utils_foo
import utils_bar
etc.
In Linux könnten Sie das tun Bearbeitung werden ~ / .profile mit so etwas wie folgt aus:
PYTHONPATH=/path/to/sharedUtils:/other/paths
export PYTHONPATH
, um die Umgebungsvariable PYTHONPATH Mit wirkt sich auf die Verzeichnisse, die Suche python, wenn für Module suchen. Da jeder Benutzer seine eigene PYTHONPATH einstellen kann, ist diese Lösung für persönliche Projekte gut.
Wenn Sie alle Benutzer auf der Maschine in der Lage sein, Module in sharedUtils
zu importieren, dann
Sie können dies erreichen, indem Sie eine .pth
-Datei. Genau dort, wo Sie setzen die .pth
Datei auf Ihrer Python-Distribution abhängen. Sehen
http: //bob.pythonmac. org / Archiv / 2005/02/06 / mit-p-ten-files-for-python-Entwicklung /
Verzeichnisstruktur:
project1/foo.py
sharedUtils/bar.py
Mit den Verzeichnissen, wie Sie sie gezeigt haben, von foo.py
innerhalb des project1
Verzeichnis, das Sie den relativen Pfad hinzufügen können, um sharedUtils
wie folgt:
import sys
sys.path.append("../sharedUtils")
import bar
Dies vermeidet einen C:/../sharedUtils
Weg zu, und wird so lange arbeiten, wie Sie die Verzeichnisstruktur nicht ändern.