使用本地目录覆盖 virtualenv 中的模块

Liz*_*ett 5 python python-module virtualenv python-2.7

我对 python 相当陌生,遇到了一个无法解决的问题。我有一个依赖于模块 B 的模块 A。通常,A 下载 B 并将其与其余鸡蛋一起存储在我的 virtualenv 站点包中。现在,我想使用 B 的本地版本来代替下载的 B 版本,但无论我做什么,A 仍然在其站点包中使用 B,而不是我在 PYTHONPATH 中指定的包。

我知道我的本地 B 设置正确,因为如果我将它添加到我的 PYTHONPATH 并且我不使用 virtualenv,我就可以很好地使用它。

如果我打开 ipython,并将本地 B 添加到 PYTHONPATH,我会看到我的 sys.path 首先列出了站点包版本,然后是 PYTHONPATH 中的目录。如果我做了一些黑客行为,比如颠倒 sys.path 的顺序并尝试加载 B,它仍然使用站点包中的 B。我发现解决此问题的唯一方法是创建从站点包中的 B 到本地 B 的符号链接,并删除本地 B 中的所有 *.pyc 文件。必须有更好的方法要做到这一点...任何帮助都会很棒。谢谢你!

我不确定这是否重要,但作为参考,我正在使用以下版本的东西:

  • 虚拟环境 12.1.1
  • 蟒蛇2.7
  • 模块A和B是我公司的内部库
  • Ubuntu 12.04.5 LTS

tza*_*man 2

如果您正在开发一对相关的项目,其中一个项目依赖于另一个项目,则只需卸载“远程”版本并使用可编辑模式pip install -e从本地副本安装它即可。

这将使您的依赖项目看到它,并自动查看上游项目的更改,而不需要任何额外的工作。