Check out yolk.
Yolk is a Python command-line tool and library for obtaining information about packages installed by setuptools, easy_install and distutils (Python 2.5) and for querying PyPI (Python Package Index a.k.a. The Cheese Shop).
pip is the one for the job, as it is a tool for installing and managing Python packages. After install you have to execute:
That will output the packages and version information in pips requirements format (can be used later to install those packages with one command). The format of the output is like:
- How to release the occupied GPU memory when calling keras model by Apache mod_wsgi django?
- What is the difference between south migrations and django migrations?
- How to Hash Django user password in Django Rest Framework?
import pprint, sys
You can slice and dice from there.
- Django admin, extending admin with custom views
- How to override template in django-allauth?
- Colorizing the output of Django tests
- How do you actually use a reusable django app in a project?
You could use pkgutil. This lists all modules inside /usr/lib/python2.6/site-packages: (Unlike
sys.modules, this lists modules without you having to import them first).
print [name for module_loader,name,ispkg in
The docs do not list
pkgutil.__all__. This means it is part of pkgutil’s public interface. You can find the following documentation on
walk_packages in /usr/lib/python2.6/pkgutil.py or by typing
Definition: pkgutil.walk_packages(path=None, prefix='', onerror=None)
Yields (module_loader, name, ispkg) for all modules recursively
on path, or, if path is None, all accessible modules.
'path' should be either None or a list of paths to look for
'prefix' is a string to output on the front of every module name
Note that this function must import all *packages* (NOT all
modules!) on the given path, in order to access the __path__
attribute to find submodules.
'onerror' is a function which gets called with one argument (the
name of the package which was being imported) if any exception
occurs while trying to import a package. If no onerror function is
supplied, ImportErrors are caught and ignored, while all other
exceptions are propagated, terminating the search.
# list all modules python can access
# list all submodules of ctypes
I don’t know of an easy way. A Python distribution (i.e. something that was installed, like Django 1.3) can have zero or more Python modules, zero or more Python packages (i.e. modules that have submodules, not what other tools call packages), zero or more scripts, zero or more data files. If you installed with pip or easy_install, metadata files are written in the egg-info directories/files/zipped directories, so a tool could walk these files to display what modules or packages were installed for a distribution, but I don’t know any tool that does that.
yolk and pip freeze will only list distributions (even if they call them packages), to let you know what version are installed, and then you can upgrade or uninstall them.
Inspecting sys.modules only gives info about modules imported during the current Python session.
So to know what modules are importable on your system after installing distributions, you have to resort to crude inspection of site-packages and similar directories, or write some code to walk over packaging metadata files and extract modules. This won’t work for distributions installed with pure distutils.
This is clearly imperfect and confusing; we’re still working on Python packaging.
BTW, can I ask what is the use case for your question? Typically you install one distribution to do something with it, and the same documentation that tells you what to install will tell you what to import.
- How to import my django app's models from command-line?
- Django South Error: AttributeError: 'DateTimeField' object has no attribute 'model'`
- External django redirect with POST parameters
- Django – When should I use signals and when should I override save method?
- How to throttle Django error emails