lkraider
lkraider

Reputation: 4180

How to easy_install egg plugin and load it without restarting application?

I'm creating an app that downloads and installs its own egg plugins, but I have a problem loading the egg after easy_install extracts it into place. This is how it works now:

The problem is that the pth is not reloaded until the python process is relaunched, which means the app has to be stopped and restarted (app is a long-running process, and plugin installation must not require a restart).

So the question is how to, either reload the pth programatically so that plugin entry-point discovery works for the new egg, or somehow have easy_install return the path it installed the egg into, so I can manually (with pkg_resources) load the new plugin?

I could create a function that tries to guess the easy_install'ed path or parse the pth on my own, but I prefer not to, if at all possible.

Python 2.6, setuptools 0.6c9


Thanks to Marius Gedminas, what I'm doing now basically is:

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

Upvotes: 6

Views: 1229

Answers (1)

Marius Gedminas
Marius Gedminas

Reputation: 11367

After some browsing of the documentation I think what you need to do is

pkg_resources.get_distribution(name).activate()

where name is the name of the package you just installed.

Upvotes: 5

Related Questions