我在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包,因为它们都是通过我需要在我的项目中使用的其他包间接导入的。任何建议将不胜感激。
答案 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")