2017-07-19 2 views
3

Ich habe ein Django-Projekt, für das ich eine virtuelle Umgebung mit den benötigten Paketen erstellt habe.Zwei virtuelle Umgebungen für ein einzelnes Django-Projekt?

Jetzt für die Entwicklung, war ich auf der Suche nach einem Werkzeug, wo ich etwas Code ausprobieren könnte, bevor es in mein Projekt einbinden. Ich hatte vor einiger Zeit eine gute Erfahrung mit Jupyter und ich dachte, dass es schön wäre, wieder mit diesem Tool zu arbeiten.

Um zu vermeiden, dass die minimale virtuelle Umgebung mit den Abhängigkeiten von Jupyter überflutet wird, kopierte ich sie und installierte jupyter zusammen mit django-extensions.

In meinem settings.py, ich habe:

if os.environ.get("VENV_NAME") == "jupyter-sandbox": 
    INSTALLED_APPS += ['django_extensions'] 

, so dass ich noch in der Lage sein kann, die minimale virtuelle Umgebung ohne django_extensions zu verwenden.

Es funktioniert ziemlich gut für den Moment abgesehen von der Tatsache, dass ich den Server nicht aus meiner Jupyter-fähigen virtuellen Umgebung ausführen kann. Dies liegt daran, dass mein Projekt django-images verwendet und django in dieser Umgebung keine Migrationsdatei finden kann (in sites-packages/django_images/migrations). Die Fehlermeldung ist unter:

raise NodeNotFoundError(self.error_message, self.key, origin=self.origin) 
django.db.migrations.exceptions.NodeNotFoundError: Migration core.0001_initial dependencies reference nonexistent parent node ('django_images', '0002_auto_20170710_2103') 

Wäre es eine gute Idee, einen symbolischen Link zu erstellen, so dass beide virtuellen Umgebungen die gleichen django-images Migrationen Ordner freigeben oder wäre es vermasselt komplett mein Projekt?

Ich bin noch nicht völlig zuversichtlich mit Migrationen und würde einige Ratschläge dazu zu schätzen wissen.

+0

also, wenn du 'django_extensions' verwendest, brauchst du auch' django_images'? –

+0

Ja, ich benutze 'django_images' in meinen Modellen. –

+0

Wenn du dein original virtualenv _duplicated_ und dann jupyter und django-extensions installiert hast, dann sollte es immer noch django-images installiert haben und nicht über die fehlenden migrationen beschweren. – ARJMP

Antwort

3

Ich denke, die Verwirrung hier ist, was Sie tun sollten. In jedem Standardprojekt sollten Sie eine von Hand gezüchtete Liste von Projektabhängigkeiten haben. Die meisten Django-Benutzer setzen diese Liste in requirements.txt (normalerweise empfohlen) oder setup.py. Sie können immer mehrere Anforderungen: anforderungs test.txt, anforderungs dev.txt usw. verwenden -r requirements.txt an der Spitze der anderen Dateien zu „importieren“ andere Anforderungen:

# requirements.txt 
django=1.11.3 

und dann ...

# requirements-test.txt 
-r requirements.txt 
pytest 
tox 

und schließlich ...

# requirements-dev.txt 
-r requirements-test.txt 
ipython 
pdbpp 
jupyter 

Ihr Ziel ist es zu haben, was Sie brauchen für Ihr Projekt innerhalb der ersten Datei auszuführen. Es spielt keine Rolle, ob Ihre virtuelle Umgebung mehr als genug hat. Außerdem sollten Sie etwas wie tox verwenden, um zu testen, ob Ihre requirements.txt tatsächlich genau das enthält, was sie benötigt. Ich hoffe, das hilft.

+0

Genie! Genau das habe ich gebraucht! Danke vielmals. –

Verwandte Themen