2017-05-19 2 views
0

Ich klettere meine Lernkurve in Python und versuche zu verstehen, wo alles zu setzen ist.Python: Codes der Modelle zwischen 2 Modulen teilen

Ich habe ursprünglich ein Python-Modul in einem Ordner und dann einen Unterordner src, in diesem src-Ordner habe ich dann meine wichtigsten Quelldateien sagen main.py dann habe ich Modelle Ordner speichern meine Modelle Codes.

/myproject/src/main.py 
/myproject/src/models/a-model.py 
/myproject/src/models/b-model.py 

So wird mein Haupt das Modell wie folgt importieren:

from models.a-model import a 

Dann, wenn ich die Zip-Datei verpacken ich den myproject Ordner mit diesem Ordnerstruktur nur zip und implementieren und alles ist in Ordnung.

Jetzt habe ich ein anderes neues Modul, das etwas anderes macht, aber die gleichen Modelle verwenden muss.

Ich kann sie alle leicht duplizieren und separat codieren und bereitstellen. Aber ich möchte die Codes mit den Modellen teilen, so dass ich, wenn sich ein Modell ändert, nur einmal anstelle von 2 Stellen aktualisieren muss.

Mein neues Modul ist wie

/mynew/src/main-b.py 
/mynew/src/models/a-model.py 
/mynew/src/models/b-model.py 

Was ist die beste Praxis, dies zu tun?

Darf ich das so?

/myproject/src/main.py 
/mynew/src/main-b.py 
/models/a-model.py 
/models/b-model.py 

Und dann den Import aktualisieren?

Aber ich habe Zweifel, wie ich bereitstellen? Muss ich auch die gleichen Ordnerstrukturen einrichten?

+0

Fügen Sie den Pfad des Verzeichnisses mit dem Paket 'models' zu Ihrer' PYTHONPATH' -Variable der Umgebung hinzu, in der Sie den Code eines der Projekte ausführen. Dann werden die 'from models import ...' sie finden. – schwobaseggl

+0

@StevenYong verwenden Sie Pydev als Ihre IDE? – direprobs

+0

Nein @direprobs, warum? –

Antwort

1

Man würde /myproject/src/models zu der Umgebungsvariablen PYTHONPATH hinzufügen. Python fügt die unter PYTHONPATH Umgebungsvariable aufgeführten Verzeichnisse zu sys.path hinzu, der Liste der Verzeichnisse, in denen Python sucht, wenn Sie versuchen, etwas zu importieren. Dies ist schlecht, weil die Änderung PYTHONPATH hat seine eigenen Nebenwirkungen, zum Glück bieten virtuelle Umgebungen einen Weg, um diese Nebenwirkungen zu umgehen.

Alternativ und viel besser Sie Ihre Module zu site-packages Verzeichnis hinzufügen könnte, wird site-packages hinzugefügt by default, this obviates the need to modify PYTHONPATH . To locate the Website-packages Verzeichnis sys.path finden Sie auf dieser Seite aus Python Dokumentation: Installing Python Modules (Legacy version).

Sie könnten auch LiClipse IDE verwenden, die mit Pydev bereits installiert ist. Create source a folder from the IDE und verknüpfen Sie Ihr vorheriges Projekt mit Ihrem neueren Projekt. Wenn Sie Ihre Projekte verknüpfen, fügt die IDE die Quellordner Ihres älteren Projekts der PYTHONPATH Ihres neueren Projekts hinzu, und Python kann Ihre Module finden.

Verwandte Themen