Как я могу иметь дело с яйцами Python для нескольких платформ в одном месте?

У нас есть общая установка Python для всех наших систем, чтобы удостовериться, что каждая система имеет ту же установку Python и упрощать проблемы конфигурации. Эта установка расположена на общем диске. У нас также есть несколько платформ, которые совместно используют эту установку. Мы обходим конфликтующие определенные для платформы файлы путем установки - исполнительный префикс настраивает опцию при компиляции Python.

Моя проблема - то, что я теперь хочу установить яйцо с помощью easy_install (или иначе), который зависим от платформы. easy_install помещает яйцо в каталог пакетов сайта платформенно независимой части установки. Название яйца имеет платформу в нем, таким образом, не должно быть никакого конфликта. Но Python только загрузит первый, который он находит. (Так, на Солярисе это могло бы попытаться загрузить яйцо Linux). Изменение легкого-install.pth файла может измениться, какой это находит, но это довольно бесполезно.

Я могу переместить .egg файлы в зависевший платформой каталог пакетов и затем использовать pkg_resources.require (), чтобы загрузить их (или вручную скорректировать путь). Но кажется, как будто я не должен иметь к тому, так как платформа от имени яйца.

Есть ли еще универсальный способ, которым я могу удостовериться, что Python загрузит яйцо для корректной платформы?

6
задан Philbert 15 December 2009 в 16:02
поделиться

4 ответа

What I ended up going with was manually moving the platform-dependent egg to the platform-specific site-packages directory (as specified at http://docs.python.org/install/index.html). Then I made another easy-install.pth in that same directory, listing the eggs to be installed.

This would be much more convenient if easy_install were to honour the exec_prefix and put platform-dependent eggs in the correct "non-pure module distribution" location. Perhaps I will request this from the easy_install folks.

2
ответ дан 17 December 2019 в 04:47
поделиться

Попробуйте virtualenv ... http://pypi.python.org/pypi/virtualenv ... поможет вам создать изолированную среду с собственным интерпретатором python + папка site_packages . Таким образом, у вас никогда не будет конфликтов с пакетами, установленными, скажем, по локальному пути.

2
ответ дан 17 December 2019 в 04:47
поделиться

Python имеет достаточно хуков, чтобы сделать это возможным, но, вероятно, это неразумно. Если вы действительно хотите реализовать это, посмотрите PEP 302 и начните взламывать easy_install или распространять исходный код. Как известно, есть На самом деле нет никакой логики в easy-install.pth .

Вам, вероятно, будет намного лучше просто отслеживать, какие пакеты Python вы хотите установить. Например, вы можете написать свой собственный пакет Python, который зависит только от желаемого набора.

1
ответ дан 17 December 2019 в 04:47
поделиться

Используйте «easy_install -m», чтобы установить все пакеты, специфичные платформы, так что на Sys.Path. Таким образом, разрешение версии происходит во время выполнения, а информация платформы будет учитываться.

0
ответ дан 17 December 2019 в 04:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: