Почему файлы setuptools / easy_install .pth плохо размещаются с PYTHONPATH, и как мне заставить их хорошо играть, и сохраняют каталоги в моем PYTHONPATH до того, как эти .pth запихнут в sys.path?
Моя текущая проблема заключается в том, что я создал пакет для нашего проекта с PyYAML и PyCrypto в качестве требований.
install_requires=["PyYAML",
"pycrypto >= 2.3"]
По мере разработки мы установили PyYaml в стандартную директорию (/usr/lib64/python2.6/site-packages) с pip.Мы установили более старую версию PyCrypto, а затем обнаружили, что нам нужна более новая версия, которую мы установили в /opt/devtools/lib64/python2.6/site-packages.Мы уже настраивали нашу PYTHONPATH для чтения из / opt в первую очередь, до / usr / lib64.И это все работало нормально в разработке.Когда мы запустились, мы получили PyCrypto 2.3 из / opt и PyYaml из /usr/lib64/....
Но теперь, когда я пытаюсь установить в virtualenv, и когда я запускаю python setup.py develop
В результате setuptools / distribate добавляет /usr/lib64/python2.6/site-packages в файл easy-install.pth, но не /opt/devtools/lib64/python2.6/site-packages.Он находит правильные версии, как показано в выводе:
Using /home/s3447/projects/wsrs.git/emp_parsing
Searching for pycrypto==2.3
Best match: pycrypto 2.3
Adding pycrypto 2.3 to easy-install.pth file
Using /opt/wsrs-devtools/stow/pycrypto-2.3/lib64/python2.6/site-packages
Searching for PyYAML==3.10
Best match: PyYAML 3.10
Adding PyYAML 3.10 to easy-install.pth file
Но не добавление / opt / ... в easy-install.pth.(Только / usr / lib64 ... и каталог, в котором я запускал setup.py, добавляется к пути.)
Конечный результат, хотя я setuptools считает, что это было успешно, когда я запускаю свой код,easy-install.pth решает, что знает, что я хочу лучше, чем я, вставляет себя перед моим PYTHONPATH, и я в итоге импортирую неправильную версию PyCrypto.
Два вопроса:
Почему setuptools не согласуются с тем, какие каталоги он добавляет в файл .pth?Я ожидал бы, что оба каталога или ни один каталог не будет установлен.
Есть ли какой-нибудь способ заставить setuptools не пытаться переопределить мой PYTHONPATH?Почему это вообще считается хорошей идеей?