2017-07-19 46 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

天才!这正是我需要的!非常感谢。 –