Как я могу вручную зарегистрировать дистрибутивы с помощью pkg_resources?

StackOverflow https://stackoverflow.com/questions/599205

Вопрос

Я пытаюсь установить пакет в Google App Engine.Пакет довольно широко опирается на pkg_resources, но нет никакого способа убежать setup.py на движке приложений.

Однако в исходном коде нет кода, зависящего от платформы, поэтому нет проблем просто заархивировать исходный код и включить его в системный путь.И я получил версию pkg_resources установлен и тоже работает.

Единственная проблема заключается в получении пакета на самом деле зарегистрированный с pkg_resources поэтому, когда он вызывает iter_entry_points он может найти соответствующие плагины.

Какие методы мне нужно вызвать, чтобы зарегистрировать модули на sys.path со всеми соответствующими метаданными, и как мне определить, какими должны быть эти метаданные?

Это было полезно?

Решение

Создайте setup.py для пакета точно так же, как вы это делаете обычно, а затем используйте "setup.py sdist --formats=zip" для создания исходного zip-файла.Встроенный zip-файл с исходным кодом будет включать каталог метаданных .egg-info, который затем можно будет найти с помощью pkg_resources.В качестве альтернативы вы можете использовать bdist_egg для всех ваших пакетов.

Другие советы

Да, для библиотек на основе setuptools вам нужно будет развернуть метаданные библиотеки "Egg" вместе с ней.Самый простой способ, который я нашел, - это развернуть целую virtualenv ( виртуальная среда ) среда, содержащая ваш проект и необходимые библиотеки.

Я выполнил этот процесс вручную и добавил этот код в main.py для инициализации папки site-packages таким образом, чтобы pkg_resources будет работать:

import site
site.addsitedir('lib/python2.5/site-packages')

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

В вашей локальной системе разработки запустите python setup.py bdist_egg, который создаст Zip-архив с включенными необходимыми метаданными.Добавьте его в свой sys.path, и это должно работать должным образом.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top