4

我有一个 Django 项目,我为它创建了一个包含所需包的虚拟环境。

现在为了开发,我正在寻找一种工具,我可以在其中尝试一些代码,然后再将其包含到我的项目中。不久前我对 Jupyter 有过很好的体验,我认为再次使用这个工具会很好。

为了避免 Jupyter 的依赖项使最小的虚拟环境混乱,我复制了它并jupyterdjango-extensions.

在我的settings.py,我有:

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

这样我仍然可以在没有django_extensions.

除了我无法从启用 Jupyter 的虚拟环境中运行服务器这一事实之外,它目前运行良好。这是因为我的项目使用和 django 在这个环境(在)django-images中找不到迁移文件。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迁移文件夹是一个好主意,还是会完全搞乱我的项目?

我对迁移还不是完全有信心,希望能得到一些建议。

4

1 回答 1

3

我认为这里的混乱是你应该做的。在任何标准项目中,您都应该有一个手工制定的项目依赖项列表。大多数 django 用户将该列表放入requirements.txt(通常推荐)或setup.py. 您始终可以有多个需求:requirements-test.txt、requirements-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 是否确实包含它需要的内容。希望有帮助。

于 2017-07-19T23:52:00.743 回答