Получение setuptools / easy_install для приятной игры с PYTHONPATH - PullRequest
8 голосов
/ 29 сентября 2011

Почему файлы 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.

Два вопроса:

  1. Почему setuptools не согласуются с тем, какие каталоги он добавляет в файл .pth?Я ожидал бы, что оба каталога или ни один каталог не будет установлен.

  2. Есть ли какой-нибудь способ заставить setuptools не пытаться переопределить мой PYTHONPATH?Почему это вообще считается хорошей идеей?

1 Ответ

0 голосов
/ 13 марта 2017

Исходя из того, что я понимаю по вашему вопросу, это может быть то, где вы можете позаботиться об этом: https://github.com/pypa/setuptools/issues/397

Похоже, у других была похожая проблема. Я могу ошибаться, я просто использую пипс. Я никогда не использую easy_install, если смогу помочь.

...