Как я могу вручную зарегистрировать рассылку с помощью 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
и это должно работать правильно.