Список установленных пакетов сайта Python? [дубликат]

Этот вопрос уже имеет ответ здесь:

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....

Спасибо.

11
задан panchicore 20 February 2010 в 02:24
поделиться

3 ответа

Посмотрите на yolk.

Yolk - это инструмент командной строки Python и библиотека для получения информации о пакетах, установленных setuptools, easy_install и distutils (Python 2.5), а также для запроса PyPI (Python Package Index a.k.a. The Cheese Shop).

7
ответ дан 3 December 2019 в 04:32
поделиться

Вы хотите sys.modules.

import pprint, sys
pprint.pprint(sys.modules)

Оттуда вы можете нарезать кубиками.

4
ответ дан 3 December 2019 в 04:32
поделиться

Вы можете использовать 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__+'.')
2
ответ дан 3 December 2019 в 04:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: