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

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

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

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

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

3 ответа

Решение

Создайте файл 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')

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

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

Другие вопросы по тегам