【发布时间】:2017-12-25 10:22:16
【问题描述】:
我有一个 Django 项目,为此我创建了一个包含所需包的虚拟环境。
现在为了开发,我正在寻找一种工具,我可以在其中尝试一些代码,然后再将其包含到我的项目中。不久前我对 Jupyter 有过很好的体验,我认为再次使用这个工具会很好。
为了避免最小的虚拟环境与 Jupyter 的依赖项混淆,我复制了它并安装了 jupyter 和 django-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 迁移文件夹是个好主意,还是会完全搞乱我的项目?
我对迁移还不是完全有信心,希望得到一些建议。
【问题讨论】:
-
所以当你使用
django_extensions时你也需要django_images吗? -
是的,我在我的模型中使用
django_images。 -
如果你复制了你原来的 virtualenv 然后安装了 jupyter 和 django-extensions,那么它应该仍然安装了 django-images 而不会抱怨那些迁移丢失。
-
我用
pip install -r requirements.txt复制了venv。现在django_images已安装在两个环境中,但第二个环境中缺少迁移文件。 -
如果您担心弄乱 virtualenvs,那么您做错了什么。它们应该是一次性的,并且在任何时候都易于重新创建。
标签: python django django-migrations virtual-environment