At 06:24 PM 12/7/2006 +0200, Ilias Lazaridis wrote:
>Looks somehow like this:
>
>
>from distutils.core import run_setup
>dist = run_setup( setuppys[0],None,'init')
>print dist
>
>loaded_components = []
>module = []
>
>import pkg_resources
>for name in pkg_resources.get_entry_map(dist,'trac.plugins'):
>     entry_point =
>pkg_resources.get_entry_info(dist,trac.plugins', name)
>         entry_point.load()
>
>but this fails, I must have missed some point.
>
>(('Expected string, Requirement, or Distribution', ))
>
>although "dist" is an:
>
><setuptools.dist.Distribution instance at 0x0187E260>

That Distribution is a distutils distribution, not a pkg_resources 
distribution.


>How can I create an egg representing object (from the sources/setup.py),
>from which I can load the entry-points afterwards, without having to
>generate an egg_info on the file-system?

You can take the dist.Distribution object's entry_points and parse it to 
create an entry point map.

See 
http://peak.telecommunity.com/DevCenter/PkgResources#creating-and-parsing 
for details.  In particular, you want to use:

      ep_map = EntryPoint.parse_map(dist.entry_points)
      entry_point = ep_map['trac.plugins'][name]

There are several big drawbacks to this approach, because you're basically 
bypassing the entire eggs system.  Here are two of the things that will 
break when you do this:

* Plugins will not be able to depend on other plugins

* Plugins will not be able to depend on other Python packages or projects

I can't guarantee that there aren't other things that will break, too.  I 
don't recommend that you use this approach in a published or production 
system, just because you don't like generating the egg-info on disk.  It's 
there for several reasons, not the least of which is that it allows you to 
ship plugins as single .egg files.  See also:

http://peak.telecommunity.com/DevCenter/PkgResources#locating-plugins

which shows how to do automatic plugin discovery and dependency 
resolution.  This is another example of something that won't work with the 
approach you're trying to use.

_______________________________________________
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig

Reply via email to