Как легко установить плагин egg и загрузить его без перезапуска приложения? - PullRequest
6 голосов
/ 12 июля 2010

Я создаю приложение, которое загружает и устанавливает собственные плагины для яйца, но у меня проблема с загрузкой яйца после того, как easy_install извлечет его на место. Вот как это работает сейчас:

  • Приложение загружает яйцо во временную папку
  • Устанавливает egg с setuptools.command.easy_install.main () в папку ~ / .app / plugins (которая указана pth в dist-пакетах)
  • На этом этапе ~ / .apps / plugins / easy-install.pth обновляется новым путем к яйцу

Проблема в том, что pth не перезагружается до тех пор, пока процесс python не будет перезапущен, что означает, что приложение должно быть остановлено и перезапущено (приложение является длительным процессом, и установка плагина не должна требовать перезапуска).

Таким образом, вопрос заключается в том, как либо программно перезагрузить pth, чтобы плагин открыл точку входа для нового яйца, либо как-то с помощью easy_install вернуть путь, в который оно установило яйцо, чтобы я мог вручную (с помощью pkg_resources) загрузить новый плагин?

Я мог бы создать функцию, которая пытается угадать путь easy_install'а или самостоятельно проанализировать pth, но я предпочитаю этого не делать, если это вообще возможно.

Python 2.6, setuptools 0.6c9


Благодаря Мариусу Гедминасу , то, что я сейчас делаю, в основном:

dist = pkg_resources.get_distribution(plugin_name)
entry = dist.get_entry_info(entry_point_name, plugin_name)
plugin = entry.load()

1 Ответ

4 голосов
/ 14 июля 2010

После некоторого просмотра документации Я думаю , что вам нужно сделать, это

pkg_resources.get_distribution(name).activate()

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...