2017-02-01 2 views
1

У меня есть очень простая настройка virtualenv на OSX с двумя пакетами, py3dns и dnspython. Оба пакета имеют модуль dns (на самом деле это DNS, другие dns, но на OSX они одинаковы), и эти модули имеют файлы с именем opcode.py.имя виртуального имени виртуального сервера

Виртуальный env устанавливает оба этих модуля в lib/python3.5/site-packages /, а не в lib/python3.5/site-packages/# {package}, поэтому эти файлы opcode.py переписываются друг друга.

Это ошибка (функция?) Virtualenv? Есть ли способ обойти это? К сожалению, у меня нет возможности использовать только один из этих пакетов dns, так как они косвенно импортируются через другие пакеты, которые мне нужно использовать в моем проекте. Любой совет будет принят во внимание.

ответ

1

Вы можете задать другой путь назначения https://pip.pypa.io/en/latest/reference/pip_install/#cmdoption-t

Вы можете установить второй пакет, как это:

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

, а затем создать файл dns.pth в сайте-пакетах с путем к пакету:

/Users/green/dns 

и в вашем коде:

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

print("ok") 
+0

Я фактически использую ток, который находится поверх виртуальных. Это сработает, если я смогу настроить ток, чтобы передать ему этот аргумент, но я не уверен, что смогу. – user141097

+0

Я не знаком с током, извините – zelenyjan