Будет ли задерживать pip / – требование переустановить скрипты bin или только яйца?

В среде Linux с вычислительным кластером мы предварительно установили разные версии python, которые нам нужны в / opt для кластерного headnode, и настройте / etc / exports на экспорт NFS /opt/pythonX.Y на вычислительные узлы для установки из headnode. Тем не менее, мы недавно перешли в более устойчивое хранилище на SAN, которое установлено на весь кластер. Мы перешли, например, /opt/python2.7 и /opt/python3.3 с headnode на новый путь на смонтированной SAN, но проблема в том, что многие из * .py-файлов под их подкаталогом bin / shebang, указывающий на путь old / opt, тем самым сохраняя это как зависимость.

Я подумал, что легко просто установить python на SAN вместо того, чтобы сбросить текущие пакеты, установленные в установках / opt python, с помощью 'pip freeze> packagelist.txt', а затем переустановить с помощью 'pip -r packagelist.txt' , но то, что было сделано, было установить все яйца (ожидалось), но почти ни один из соответствующих сценариев бинов (неожиданный). Я быстро обнаружил это, когда пользователи начали жаловаться на то, что их скрипты bash, которые используют многие из этих * .py бункеров / скриптов, сломались, когда их .bashrc указывал на новый путь SAN для запуска python, в первую очередь потому, что все сценарии * .py (которые по пути установки / opt) не были в файле pythonX.Y / bin / SAN SAN, хотя соответствующие яйца были установлены в каталог сайтов-пакетов.

Я пытался понять взаимосвязь между яйцами и сценариями в отношении установки и местоположения каталога (вывода), и я обнаружил, что setup.py должен иметь параметр «scripts =», указанный в функции setup (), как указано в этом вопросе SE: setup.py и добавление файла в / bin / .

Я не разработчик и даже не код в python, но может кто-то, пожалуйста, помогите мне понять, почему «переустановить» пипетку с помощью freeze / -r (–requirement) будет устанавливать яйца на сайт-пакеты / но не на скрипты на bin /? Если они не пришли из одного пакета или не установили, откуда они взялись? Если вам нужно больше информации, пожалуйста, дайте мне знать.

Возможно, вы использовали rsynced над файлом конфигурации дистрибутива для python. В частности pydistutils.cfg:

https://docs.python.org/2/install/#location-and-names-of-config-files

Чтобы прояснить, сценарии относятся к программам python, которые обычно помещаются в PATH во время «яиц» или иным образом ссылаются на модули и библиотеки python, используемые в программах python.

В pydistutils.cfg должна быть настройка для «install_scripts» или «script_dir». Я бы сделал ставку, это все равно указывает на ваш старый каталог скриптов python, если это так.