python - 单个 Django 项目的两个虚拟环境?

标签 python django django-migrations virtual-environment

我有一个 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')

创建符号链接(symbolic link)以便两个虚拟环境共享相同的 django-images 迁移文件夹是否是个好主意,或者它会完全弄乱我的项目吗?

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

最佳答案

我认为这里的困惑是你应该做什么。在任何标准项目中,您都应该有一个手工培养的项目依赖项列表。大多数 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 是否确实包含它需要的内容。希望对您有所帮助。

关于python - 单个 Django 项目的两个虚拟环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45202535/

相关文章:

python - 按时间间隔分组并获取满足条件的第一行

自转换以来的 Python 时间戳

python - 在 Python 中将突出显示的文本复制到剪贴板

python - Django TestCase 不在辅助数据库上使用事务

python - 将 TinyMCE 用于深色背景的网站

django - 403 由 Graphite 烯-django。不要使用 csrf_exempt

python - 查看 Django 中以其他列为条件的新列

python - 删除 tflearn 中的列产生奇怪的输出

mysql - 我删除了所有迁移并重新创建了数据库,但 "Import Error : No module named ' django.db.migrations”

django - 在 Django 1.7c2 中运行迁移时出现循环依赖错误