Подтвердить что ты не робот

Настройка Python для использования дополнительных мест для сайтов-пакетов

Есть ли способ рассказать Python о дополнительных местах site-packages без изменения существующих скриптов?

На моем сервере CentOS 5.5 у меня установлена ​​установка Python 2.7, установленная в /opt/python2.7.2, и в /opt/python2.7.2/lib/python2.7/site-packages есть папка site-packages.

Причиной этого является то, что я не хотел нарушать существующую установку Python 2.4, поставляемую с дистрибутивом 5.5.

Однако стороннее приложение Python также добавило папку site-packages по адресу: /usr/local/lib/python2.7/site-packages и установила себя в этом месте.

Это отчасти является моей ошибкой, потому что я не настраивал PREFIX в приложении Makefile перед установкой, но теперь я немного не могу с этим поделать.

Я знаю, что могу это сделать:

import sys; sys.path.insert(0, "/usr/local/lib/python2.7/site-packages")

Однако это потребует от меня отслеживания всех script и добавления выше, что не является идеальным, если в будущем будут обновления.

Чтобы обойти это, я создал символическую ссылку в /opt/python2.7.2/lib/python2.7/site-packages для местоположения этого стороннего приложения:

ln -sf /usr/local/lib/python2.7/site-packages/theapp /opt/python2.7.2/lib/python2.7/site-packages/theapp

Кажется, что все работает нормально, но мне интересно, есть ли лучший способ?

4b9b3361

Ответ 1

Вы можете использовать Site-specific hook для настройки.

"Файл конфигурации пути - это файл, имя которого имеет форму name.pth и существует в одном из четырех упомянутых выше каталогов, а его содержимое - дополнительные элементы (по одному на строку), которые нужно добавить в sys.path."

В вашем случае вы сможете достичь того, чего хотите, просто отбросив файл .pth, содержащий путь к каталогу, который должен включать:

[[email protected]]$ echo "/usr/local/lib/python2.7/site-packages/" > /opt/python2.7.2/lib/python2.7/site-packages/usrlocal.pth

Ответ 2

Вы можете заменить исполняемый файл python на оболочку script, которая добавляет ваш добавленный путь установки к PYTHONPATH. Но это kludge.

Но я попытаюсь исправить установку надстройки, чтобы она правильно попала в каталог сайта-пакетов.