Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #47426
| From | Carlos Nepomuceno <carlosnepomuceno@outlook.com> |
|---|---|
| Subject | RE: Listing modules from all installed packages |
| Date | 2013-06-09 09:22 +0300 |
| References | <210f2f63-13b0-46c2-b080-fd831cb3ca49@googlegroups.com> |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.2908.1370758945.3114.python-list@python.org> (permalink) |
[Multipart message — attachments visible in raw view] - view raw
Just realized that you've asked for installed packages. Perhaps the following will do the trick. I don't know why the 'lib-tk' isn't included. Why not? toplevel_packages = ['%s\\%s'%(ml.path,name)for ml,name,ispkg in pkgutil.iter_modules() if ispkg] print '\n'.join(toplevel_packages) > Date: Sat, 8 Jun 2013 21:30:48 -0700 > Subject: Listing modules from all installed packages > From: jphalip@gmail.com > To: python-list@python.org > > Hi, > > I'm trying to write a function that programmatically obtains and returns the exact location of all first-level modules for all installed packages. > > For example, if the packages named 'django' and 'django-debug-toolbar' are installed, I'd like this function to return something like: > >>> installed_modules() > /Users/my_user/.virtualenvs/my_venv/lib/python2.6/site-packages/django > /Users/my_user/.virtualenvs/my_venv/src/debug_toolbar > > That is, this function needs to consider all installed packages, including those that have been installed in "edit" mode (i.e. in the src/ folder). Note also that the main module for the 'django-debug-toolbar' is in fact named 'debug_toolbar'. > > So far the closest I've been to retrieving the list of first-level modules is as follows: > > import os > import pkg_resources > import setuptools > > pkgs = set() > > for dist in pkg_resources.working_set: > if os.path.isdir(dist.location): > for pkg in setuptools.find_packages(dist.location): > if '.' not in pkg: > pkgs.add(pkg) > > The idea is then to loop through that list of modules, import them and get their exact locations by fetching their __file__ attribute values. > > However, this feels very hackish and I don't think it's actually quite correct either. I'm sure there must be a better way. If possible I'd also like to avoid having to use setuptools. > > Do you have any tips on how to achieve this? > > Many thanks! > > Julien > -- > http://mail.python.org/mailman/listinfo/python-list
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Listing modules from all installed packages Julien Phalip <jphalip@gmail.com> - 2013-06-08 21:30 -0700
RE: Listing modules from all installed packages Carlos Nepomuceno <carlosnepomuceno@outlook.com> - 2013-06-09 08:23 +0300
Re: Listing modules from all installed packages 88888 Dihedral <dihedral88888@gmail.com> - 2013-06-09 11:57 -0700
RE: Listing modules from all installed packages Carlos Nepomuceno <carlosnepomuceno@outlook.com> - 2013-06-09 09:22 +0300
Re: Listing modules from all installed packages cclauss@bluewin.ch - 2013-06-09 05:51 -0700
Re: Listing modules from all installed packages Julien Phalip <jphalip@gmail.com> - 2013-06-14 12:18 -0700
csiph-web