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

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top