virtualenv模块名称冲突

时间:2017-02-01 19:44:04

标签: python virtualenv

我在OSX上有一个非常基本的virtualenv设置,有两个包,py3dns和dnspython。两个软件包都有一个dns模块(实际上一个是DNS,另一个是DNS,但在OSX上它们是相同的),这些模块都有名为opcode.py的文件。

虚拟环境将这两个模块安装到lib / python3.5 / site-packages /中,而不是安装到lib / python3.5 / site-packages /#{package}中,因此这些opcode.py文件会覆盖每个模块其他。

这是virtualenv的错误(功能?)?这有什么办法吗?不幸的是,我没有选择只使用其中一个dns包,因为它们都是通过我需要在我的项目中使用的其他包间接导入的。任何建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以指定不同的目标路径https://pip.pypa.io/en/latest/reference/pip_install/#cmdoption-t

你可以像这样安装第二个包:

pip3 install dnspython --target /Users/green/dns

然后在site-packages中创建文件dns.pth,其中包含包的路径:

/Users/green/dns

并在您的代码中:

from dns.opcode import from_text
from DNS.Opcode import opcodemap

print("ok")