2017-07-19 50 views
3

我有一個Django項目,我已經爲它創建了一個虛擬環境和它需要的包。單個Django項目的兩個虛擬環境?

現在爲了開發,我正在尋找一個工具,在將其包含到我的項目之前,我可以嘗試一些代碼。我剛剛和Jupyter有過一段很好的經歷,我認爲再次使用這個工具會很好。

爲了避免與Jupyter的依賴關係混淆最小的虛擬環境,我複製它並安裝jupyterdjango-extensions

在我settings.py,我有:

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

讓我仍然能夠使用最少的虛擬環境沒有django_extensions

除了我無法從支持Jupyter的虛擬環境中運行服務器這一事實之外,它現在運行得很好。這是因爲我的項目使用django-images,並且django在此環境中找不到遷移文件(位於sites-packages/django_images/migrations)。該錯誤消息如下:

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') 

難道是要創造一個符號一個好主意,這樣既虛擬環境共享相同的django-images遷移的文件夾或將它搞糟完全我的項目?

我對遷移還沒有充分的信心,並希望對此有所建議。

+0

所以當你使用'django_extensions'你也需要'django_images'? –

+0

是的,我在模型中使用'django_images'。 –

+0

如果您已經_duplicated_您的原始virtualenv,然後安裝了jupyter和django-extensions,那麼它應該仍然安裝了django-images,而不是抱怨缺少這些遷移。 – ARJMP

回答

3

我認爲這裏的困惑是你應該做的。在任何標準項目中,您都應該有一個手工培養的項目依賴列表。大多數django用戶將該列表放入requirements.txt(通常推薦)或setup.py。你總是可以有多個要求:要求-test.txt的,要求-dev.txt等在其他文件上使用-r requirements.txt「進口」其他要求:

# requirements.txt 
django=1.11.3 

,然後...

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

終於...

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

你的目標是讓任何你需要爲你的項目的第一個文件內運行。如果你的虛擬環境綽綽有餘,這並不重要。另外,您應該使用類似tox的東西來測試您的requirements.txt是否實際上包含它所需的內容。希望有所幫助。

+0

天才!這正是我需要的!非常感謝。 –