Этот вопрос уже имеет ответ здесь:
from distutils.sysconfig import get_python_lib; print get_python_lib()
Возвраты: /usr/lib/python2.6/site-packages
import sys; print sys.path
Возвраты: ['', '/usr/lib/python2.6/site-packages/Django-1.1.1-py2.6.egg', '/usr/lib/python2.6/site-packages/pip-0.6.3-py2.6.egg', '/usr/lib/python2.6/site-packages/TRML2PDF-1.0-py2.6.egg', '/usr/lib/python2.6/site-packages/django_threaded_multihost-1.3_3-py2.6.egg',...............
Но как перечислить "разрешенное к ввозу имя" от установленных пакетов сайта? Например: (прежде чем импортируют результаты), django, pip, trm2pdf....
Спасибо.
Посмотрите на yolk.
Yolk - это инструмент командной строки Python и библиотека для получения информации о пакетах, установленных setuptools, easy_install и distutils (Python 2.5), а также для запроса PyPI (Python Package Index a.k.a. The Cheese Shop).
Вы хотите sys.modules
.
import pprint, sys
pprint.pprint(sys.modules)
Оттуда вы можете нарезать кубиками.
Вы можете использовать pkgutil. Он выводит список всех модулей внутри /usr/lib/python2.6/site-packages: (В отличие от sys.modules
, он выводит список модулей без необходимости их импортировать).
import pkgutil
print [name for module_loader,name,ispkg in
pkgutil.walk_packages(['/usr/lib/python2.6/site-packages'])]
Редактировать:
В документации нет списка walk_packages
. Однако pkgutil
включает walk_packages
в pkgutil.__all__
. Это означает, что он является частью публичного интерфейса pkgutil. Вы можете найти следующую документацию по walk_packages
в /usr/lib/python2.6/pkgutil.py или набрав help(pkgutil.walk_packages)
:
Definition: pkgutil.walk_packages(path=None, prefix='', onerror=None)
Docstring:
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
modules in.
'prefix' is a string to output on the front of every module name
on output.
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.
Examples:
# list all modules python can access
walk_packages()
# list all submodules of ctypes
walk_packages(ctypes.__path__, ctypes.__name__+'.')