Я хотел бы получить список модулей Python, которые находятся в моей установке Python (сервер UNIX).
Как вы можете получить список модулей Python, установленных на вашем компьютере?
Я хотел бы получить список модулей Python, которые находятся в моей установке Python (сервер UNIX).
Как вы можете получить список модулей Python, установленных на вашем компьютере?
Ответы:
Мои 50 центов за получение pip freeze
подобного списка из скрипта Python:
import pip
installed_packages = pip.get_installed_distributions()
installed_packages_list = sorted(["%s==%s" % (i.key, i.version)
for i in installed_packages])
print(installed_packages_list)
Как (слишком длинный) один лайнер:
sorted(["%s==%s" % (i.key, i.version) for i in pip.get_installed_distributions()])
Предоставление:
['behave==1.2.4', 'enum34==1.0', 'flask==0.10.1', 'itsdangerous==0.24',
'jinja2==2.7.2', 'jsonschema==2.3.0', 'markupsafe==0.23', 'nose==1.3.3',
'parse-type==0.3.4', 'parse==1.6.4', 'prettytable==0.7.2', 'requests==2.3.0',
'six==1.6.1', 'vioozer-metadata==0.1', 'vioozer-users-server==0.1',
'werkzeug==0.9.4']
Это решение относится к области системы или в сферу виртуальной среды, и охватывают пакеты установлены setuptools
, pip
и ( бог запрещает ) easy_install
.
Я добавил результат этого вызова на свой флеш-сервер, поэтому, когда я вызываю его с помощью, http://example.com/exampleServer/environment
я получаю список пакетов, установленных на сервере virtualenv. Это делает отладку намного проще.
Я заметил странное поведение этой техники - когда интерпретатор Python вызывается в том же каталоге, что и setup.py
файл, он не перечисляет пакет, установленный setup.py
.
$ cd /tmp
$ virtualenv test_env
New python executable in test_env/bin/python
Installing setuptools, pip...done.
$ source test_env/bin/activate
(test_env) $
Клонировать Git-репо с setup.py
(test_env) $ git clone https://github.com/behave/behave.git
Cloning into 'behave'...
remote: Reusing existing pack: 4350, done.
remote: Total 4350 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (4350/4350), 1.85 MiB | 418.00 KiB/s, done.
Resolving deltas: 100% (2388/2388), done.
Checking connectivity... done.
Мы ведем себя setup.py
в /tmp/behave
:
(test_env) $ ls /tmp/behave/setup.py
/tmp/behave/setup.py
Установите пакет python из репозитория git
(test_env) $ cd /tmp/behave && pip install .
running install
...
Installed /private/tmp/test_env/lib/python2.7/site-packages/enum34-1.0-py2.7.egg
Finished processing dependencies for behave==1.2.5a1
/tmp
>>> import pip
>>> sorted(["%s==%s" % (i.key, i.version) for i in pip.get_installed_distributions()])
['behave==1.2.5a1', 'enum34==1.0', 'parse-type==0.3.4', 'parse==1.6.4', 'six==1.6.1']
>>> import os
>>> os.getcwd()
'/private/tmp'
/tmp/behave
>>> import pip
>>> sorted(["%s==%s" % (i.key, i.version) for i in pip.get_installed_distributions()])
['enum34==1.0', 'parse-type==0.3.4', 'parse==1.6.4', 'six==1.6.1']
>>> import os
>>> os.getcwd()
'/private/tmp/behave'
behave==1.2.5a1
отсутствует во втором примере, потому что рабочий каталог содержит behave
«s setup.py
файл.
Я не смог найти ссылки на этот вопрос в документации. Возможно, я открою ошибку для этого.
import pkg_resources; installed_packages = [(d.project_name, d.version) for d in pkg_resources.working_set]
AttributeError: module 'pip' has no attribute 'get_installed_distributions'
.
help('modules')
в оболочке / приглашении Python.
pydoc modules
работает. Вы должны представить это как ответ.
python -c 'help("modules")'
Теперь эти методы я попробовал сам, и я получил именно то, что рекламировалось: все модули.
Увы, на самом деле вас не волнует stdlib, вы знаете, что вы получите при установке Python.
На самом деле, я хочу то, что я установил.
Что на самом деле, на удивление, работало просто отлично:
pip freeze
Который вернулся:
Fabric==0.9.3
apache-libcloud==0.4.0
bzr==2.3b4
distribute==0.6.14
docutils==0.7
greenlet==0.3.1
ipython==0.10.1
iterpipes==0.4
libxml2-python==2.6.21
Я говорю «удивительно», потому что инструмент для установки пакетов - это именно то место, где можно было бы ожидать найти эту функциональность, хотя и не под названием «заморозить», но упаковка на python настолько странна, что я поражен тем, что этот инструмент имеет смысл. Пип 0.8.2, Python 2.7.
Начиная с версии 1.3, у вас есть доступ к:
pip list
Который кажется синтаксическим сахаром для "замораживания пипса". В нем будут перечислены все модули, относящиеся к вашей установке или virtualenv, а также номера их версий. К сожалению, он не отображает номер текущей версии какого-либо модуля, а также не моет посуду и не светит обувь.
pip list --local
различие между virtualenv
глобальными пакетами сайтов, которые обсуждаются здесь .
pip list
самый простой и лучший. Вот варианты и детали.
В ipython
вы можете ввести « import
Tab».
В стандартном интерпретаторе Python вы можете ввести " help('modules')
".
В командной строке вы можете использовать .pydoc
modules
В сценарии звоните pkgutil.iter_modules()
.
pkgutil.iter_modules()
работает, решение pip выше не перечисляет все пакеты, только те, которые установлены через pip.
python -c 'import pkgutil;print [x[1] for x in list(pkgutil.iter_modules())]'
. Он должен вывести все имена модулей в один действительно большой список Python. Этот x[1]
бит используется для извлечения имени модуля из кортежей, сгенерированных pkgutil.iter_modules()
.
Я просто использую это, чтобы увидеть используемые в настоящее время модули:
import sys as s
s.modules.keys()
который показывает все модули, работающие на вашем питоне.
Для всех встроенных модулей используйте:
s.modules
Это дикт, содержащий все модули и объекты импорта.
pydoc
не pip
установлены (в моем случае это NAS).
help('modules')
просто висит без ответа для меня. Но этот подход sys
В обычной оболочке просто используйте
pydoc modules
py -m pydoc modules
в cmd или Powershell.
pydoc modules
не работал для меня в Windows 10 с Python 3.6, но модификация @VKK: py -m pydoc modules
работает в cmd / Powershell.
Начиная с 10 пункта, принятый ответ больше не будет работать. Команда разработчиков удалила доступ к get_installed_distributions
рутине. Есть альтернативная функция setuptools
для того же. Вот альтернативная версия, которая работает с пип 10:
import pkg_resources
installed_packages = pkg_resources.working_set
installed_packages_list = sorted(["%s==%s" % (i.key, i.version)
for i in installed_packages])
print(installed_packages_list)
Пожалуйста, дайте мне знать, будет ли это работать или не будет работать в предыдущих версиях pip.
pip freeze
; глубина моих знаний по этой теме довольно ограничена. Я вроде как нашел свой путь к решению, когда принятый ответ не работал для меня, и я попытался объединить его с ответом, связанным с этим, setuptools
и заставил его работать.
get_installed_distributions routine
.
setuptools
.
Я обычно использую, pip list
чтобы получить список пакетов (с версией).
Конечно, это работает и в виртуальной среде. Чтобы показать, что установлено только в виртуальной среде (не в глобальных пакетах), используйте pip list --local
.
Вот документация, показывающая все доступные pip list
варианты, с несколькими хорошими примерами.
Очень простой поиск с использованием pkgutil.iter_modules
from pkgutil import iter_modules
a=iter_modules()
while True:
try: x=a.next()
except: break
if 'searchstr' in x[1]: print x[1]
for m in iter_modules()
и это сработало.
Я столкнулся с установленным пользователем Python 2.7 на OS X. Для отображения списка установленных модулей требовался X11 (как с помощью справки, так и с помощью pydoc).
Чтобы иметь возможность вывести список всех модулей без установки X11, я запустил pydoc как http-сервер, то есть:
pydoc -p 12345
Тогда можно направить Safari, http://localhost:12345/
чтобы увидеть все модули.
В терминале или IPython введите:
help('modules')
тогда
In [1]: import #import press-TAB
Display all 631 possibilities? (y or n)
ANSI audiodev markupbase
AptUrl audioop markupsafe
ArgImagePlugin avahi marshal
BaseHTTPServer axi math
Bastion base64 md5
BdfFontFile bdb mhlib
BmpImagePlugin binascii mimetools
BufrStubImagePlugin binhex mimetypes
CDDB bisect mimify
CDROM bonobo mmap
CGIHTTPServer brlapi mmkeys
Canvas bsddb modulefinder
CommandNotFound butterfly multifile
ConfigParser bz2 multiprocessing
ContainerIO cPickle musicbrainz2
Cookie cProfile mutagen
Crypto cStringIO mutex
CurImagePlugin cairo mx
DLFCN calendar netrc
DcxImagePlugin cdrom new
Dialog cgi nis
DiscID cgitb nntplib
DistUpgrade checkbox ntpath
Это решение основано на модулях importlib
и pkgutil
работает с CPython 3.4 и CPython 3.5, но не поддерживает CPython 2.
объяснение
sys.builtin_module_names
- имена всех встроенных модулей (смотри мой ответ здесь )pkgutil.iter_modules()
- возвращает информацию обо всех доступных модуляхimportlib.util.find_spec()
- возвращает информацию об импорте модуля, если он существуетBuiltinImporter
- импортер для встроенных модулей ( документы )SourceFileLoader
- импортер для стандартного модуля Python (по умолчанию имеет расширение * .py) ( документы )ExtensionFileLoader
- импортер для модулей в виде разделяемой библиотеки (написано на C или C ++)Полный код
import sys
import os
import shutil
import pkgutil
import importlib
import collections
if sys.version_info.major == 2:
raise NotImplementedError('CPython 2 is not supported yet')
def main():
# name this file (module)
this_module_name = os.path.basename(__file__).rsplit('.')[0]
# dict for loaders with their modules
loaders = collections.OrderedDict()
# names`s of build-in modules
for module_name in sys.builtin_module_names:
# find an information about a module by name
module = importlib.util.find_spec(module_name)
# add a key about a loader in the dict, if not exists yet
if module.loader not in loaders:
loaders[module.loader] = []
# add a name and a location about imported module in the dict
loaders[module.loader].append((module.name, module.origin))
# all available non-build-in modules
for module_name in pkgutil.iter_modules():
# ignore this module
if this_module_name == module_name[1]:
continue
# find an information about a module by name
module = importlib.util.find_spec(module_name[1])
# add a key about a loader in the dict, if not exists yet
loader = type(module.loader)
if loader not in loaders:
loaders[loader] = []
# add a name and a location about imported module in the dict
loaders[loader].append((module.name, module.origin))
# pretty print
line = '-' * shutil.get_terminal_size().columns
for loader, modules in loaders.items():
print('{0}\n{1}: {2}\n{0}'.format(line, len(modules), loader))
for module in modules:
print('{0:30} | {1}'.format(module[0], module[1]))
if __name__ == '__main__':
main()
Применение
Для CPython3.5 (усечено)
$ python3.5 python_modules_info.py
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
30: <class '_frozen_importlib.BuiltinImporter'>
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
_ast | built-in
_codecs | built-in
_collections | built-in
_functools | built-in
_imp | None
_io | built-in
_locale | built-in
_operator | built-in
_signal | built-in
_sre | built-in
_stat | built-in
_string | built-in
_symtable | built-in
_thread | built-in
(****************************truncated*******************************)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
227: <class '_frozen_importlib_external.SourceFileLoader'>
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
__future__ | /usr/local/lib/python3.5/__future__.py
_bootlocale | /usr/local/lib/python3.5/_bootlocale.py
_collections_abc | /usr/local/lib/python3.5/_collections_abc.py
_compat_pickle | /usr/local/lib/python3.5/_compat_pickle.py
_compression | /usr/local/lib/python3.5/_compression.py
_dummy_thread | /usr/local/lib/python3.5/_dummy_thread.py
_markupbase | /usr/local/lib/python3.5/_markupbase.py
_osx_support | /usr/local/lib/python3.5/_osx_support.py
_pydecimal | /usr/local/lib/python3.5/_pydecimal.py
_pyio | /usr/local/lib/python3.5/_pyio.py
_sitebuiltins | /usr/local/lib/python3.5/_sitebuiltins.py
(****************************truncated*******************************)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
64: <class '_frozen_importlib_external.ExtensionFileLoader'>
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
_bisect | /usr/local/lib/python3.5/lib-dynload/_bisect.cpython-35m-x86_64-linux-gnu.so
_bz2 | /usr/local/lib/python3.5/lib-dynload/_bz2.cpython-35m-x86_64-linux-gnu.so
_codecs_cn | /usr/local/lib/python3.5/lib-dynload/_codecs_cn.cpython-35m-x86_64-linux-gnu.so
_codecs_hk | /usr/local/lib/python3.5/lib-dynload/_codecs_hk.cpython-35m-x86_64-linux-gnu.so
_codecs_iso2022 | /usr/local/lib/python3.5/lib-dynload/_codecs_iso2022.cpython-35m-x86_64-linux-gnu.so
(****************************truncated*******************************)
Для CPython3.4 (усечено)
$ python3.4 python_modules_info.py
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
54: <class '_frozen_importlib.BuiltinImporter'>
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
_ast | built-in
_bisect | built-in
_codecs | built-in
_collections | built-in
_datetime | built-in
_elementtree | built-in
_functools | built-in
_heapq | built-in
_imp | None
_io | built-in
_locale | built-in
_md5 | built-in
_operator | built-in
_pickle | built-in
_posixsubprocess | built-in
_random | built-in
(****************************truncated*******************************)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
246: <class '_frozen_importlib.SourceFileLoader'>
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
__future__ | /usr/lib/python3.4/__future__.py
_bootlocale | /usr/lib/python3.4/_bootlocale.py
_collections_abc | /usr/lib/python3.4/_collections_abc.py
_compat_pickle | /usr/lib/python3.4/_compat_pickle.py
_dummy_thread | /usr/lib/python3.4/_dummy_thread.py
_markupbase | /usr/lib/python3.4/_markupbase.py
_osx_support | /usr/lib/python3.4/_osx_support.py
_pyio | /usr/lib/python3.4/_pyio.py
(****************************truncated*******************************)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
44: <class '_frozen_importlib.ExtensionFileLoader'>
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
_bz2 | /usr/lib/python3.4/lib-dynload/_bz2.cpython-34m-x86_64-linux-gnu.so
_codecs_cn | /usr/lib/python3.4/lib-dynload/_codecs_cn.cpython-34m-x86_64-linux-gnu.so
_codecs_hk | /usr/lib/python3.4/lib-dynload/_codecs_hk.cpython-34m-x86_64-linux-gnu.so
_codecs_iso2022 | /usr/lib/python3.4/lib-dynload/_codecs_iso2022.cpython-34m-x86_64-linux-gnu.so
_codecs_jp | /usr/lib/python3.4/lib-dynload/_codecs_jp.cpython-34m-x86_64-linux-gnu.so
_codecs_kr | /usr/lib/python3.4/lib-dynload/_codecs_kr.cpython-34m-x86_64-linux-gnu.so
_codecs_tw | /usr/lib/python3.4/lib-dynload/_codecs_tw.cpython-34m-x86_64-linux-gnu.so
_crypt | /usr/lib/python3.4/lib-dynload/_crypt.cpython-34m-x86_64-linux-gnu.so
(****************************truncated*******************************)
pip
- системе управления пакетами, используемой для установки и управления пакетами программного обеспечения, написанными на Python, и в результате pip.get_installed_distributions()
возвращаются модули, установленные вместе с пипом. Мой ответ полностью основан на стандартной библиотеке Python и охватывает все модули, доступные для импорта. Самый большой недостаток моего ответа - нет поддержки для CPython 2.
**truncated**
, где вывод усекается. Может быть, вы не осторожны, но если это не так, чтобы выслать мне информацию о вашей системе и реализации Python, я сделаю дополнительные исследования, чтобы исправить это.
Предупреждение: Адам Матан не рекомендует это использование в пипсах> 10.0. Также читайте комментарий @ sinoroc ниже
Это было вдохновлено ответом Адама Матана (принятым):
import tabulate
try:
from pip import get_installed_distributions
except:
from pip._internal.utils.misc import get_installed_distributions
tabpackages = []
for _, package in sorted([('%s %s' % (i.location, i.key), i) for i in get_installed_distributions()]):
tabpackages.append([package.location, package.key, package.version])
print(tabulate.tabulate(tabpackages))
который затем распечатывает таблицу в виде
19:33 pi@rpi-v3 [iot-wifi-2] ~/python$ python installed_packages.py
------------------------------------------- -------------- ------
/home/pi/.local/lib/python2.7/site-packages enum-compat 0.0.2
/home/pi/.local/lib/python2.7/site-packages enum34 1.1.6
/home/pi/.local/lib/python2.7/site-packages pexpect 4.2.1
/home/pi/.local/lib/python2.7/site-packages ptyprocess 0.5.2
/home/pi/.local/lib/python2.7/site-packages pygatt 3.2.0
/home/pi/.local/lib/python2.7/site-packages pyserial 3.4
/usr/local/lib/python2.7/dist-packages bluepy 1.1.1
/usr/local/lib/python2.7/dist-packages click 6.7
/usr/local/lib/python2.7/dist-packages click-datetime 0.2
/usr/local/lib/python2.7/dist-packages construct 2.8.21
/usr/local/lib/python2.7/dist-packages pyaudio 0.2.11
/usr/local/lib/python2.7/dist-packages tabulate 0.8.2
------------------------------------------- -------------- ------
что позволяет вам легко определить, какие пакеты вы установили с и без sudo
.
Заметка в стороне: я заметил, что когда я устанавливаю пакет один раз через sudo
и один раз без, один имеет приоритет, так что другой не отображается в списке (отображается только одно местоположение). Я полагаю, что в списке будет указан только один из них в локальном каталоге. Это может быть улучшено.
pip
один раз, а затем выйти. Похоже, что проблема заключается в том, что поведение может измениться.
_internal
). В целом, это, очевидно, работает, но это плохая практика. Есть лучшие альтернативы, некоторые есть в других ответах на этот вопрос.
Помимо использования pip freeze
я устанавливал желток в моей виртуальной среде.
В случае, если у вас установлен дистрибутив anaconda python , вы также можете использовать
$conda list
в дополнение к решениям, описанным выше.
conda install
sys.modules
pip
), вы можете посмотреть наpip.get_installed_distributions()
Для второй цели, пример кода:
import pip
for package in pip.get_installed_distributions():
name = package.project_name # SQLAlchemy, Django, Flask-OAuthlib
key = package.key # sqlalchemy, django, flask-oauthlib
module_name = package._get_metadata("top_level.txt") # sqlalchemy, django, flask_oauthlib
location = package.location # virtualenv lib directory etc.
version = package.version # version number
/usr/bin/python
или тот, что пришел с python.org ? Для первого я могу использовать sys.modules
без проблем.
system.modules
вместо sys.modules
.
Запустите следующее в вашем редакторе Python или IPython
import pkg_resources;
installed_packages = {d.project_name: d.version for d in pkg_resources.working_set}
print(installed_packages)
Прочитайте другие ответы и соберите эту комбинацию, которая является самой быстрой и простой в Python
pip freeze делает все, чтобы найти пакеты, однако можно просто написать следующую команду, чтобы перечислить все пути, где находятся пакеты python.
>>> import site; site.getsitepackages()
['/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']
Есть много способов снять кожу с кошки.
Самый простой способ - использовать pydoc
функцию непосредственно из оболочки с помощью:
pydoc modules
Но для получения дополнительной информации используйте инструмент под названием pip-date, который также сообщит вам даты установки.
pip install pip-date
Есть много идей, вначале я размышляю над этими двумя:
зернышко
минусы: не всегда установлены
помощь ( «модули»)
минусы: вывод на консоль; со сломанными модулями (см. Ubuntu ...) можно segfault
Мне нужен простой подход, использующий базовые библиотеки и совместимый со старым Python 2.x
И я вижу свет: listmodules.py
В каталоге исходных текстов документации в 2.5 скрыт небольшой скрипт, в котором перечислены все доступные модули для установки на Python.
Плюсы:
использует только imp, sys, os, re, time
предназначен для работы на Python 1.5.2 и новее
исходный код действительно компактен, так что вы можете легко переделать его, например, передать список исключений с ошибочными модулями (не пытайтесь импортировать их)
Мне нужно было найти конкретную версию пакетов, доступных по умолчанию в AWS Lambda. Я сделал это с коллажем идей с этой страницы. Я делюсь этим для потомков.
import pkgutil
__version__ = '0.1.1'
def get_ver(name):
try:
return str(__import__(name).__version__)
except:
return None
def lambda_handler(event, context):
return {
'statusCode': 200,
'body': [{
'path': m.module_finder.path,
'name': m.name,
'version': get_ver(m.name),
} for m in list(pkgutil.iter_modules())
#if m.module_finder.path == "/var/runtime" # Uncomment this if you only care about a certain path
],
}
Я обнаружил, что предоставляемая библиотека boto3 устарела, и я не виноват, что мой код не работает. Мне просто нужно было добавить boto3 и botocore в мой проект. Но без этого я бы бился головой, думая, что мой код плохой.
{
"statusCode": 200,
"body": [
{
"path": "/var/task",
"name": "lambda_function",
"version": "0.1.1"
},
{
"path": "/var/runtime",
"name": "bootstrap",
"version": null
},
{
"path": "/var/runtime",
"name": "boto3",
"version": "1.9.42"
},
{
"path": "/var/runtime",
"name": "botocore",
"version": "1.12.42"
},
{
"path": "/var/runtime",
"name": "dateutil",
"version": "2.7.5"
},
{
"path": "/var/runtime",
"name": "docutils",
"version": "0.14"
},
{
"path": "/var/runtime",
"name": "jmespath",
"version": "0.9.3"
},
{
"path": "/var/runtime",
"name": "lambda_runtime_client",
"version": null
},
{
"path": "/var/runtime",
"name": "lambda_runtime_exception",
"version": null
},
{
"path": "/var/runtime",
"name": "lambda_runtime_marshaller",
"version": null
},
{
"path": "/var/runtime",
"name": "s3transfer",
"version": "0.1.13"
},
{
"path": "/var/runtime",
"name": "six",
"version": "1.11.0"
},
{
"path": "/var/runtime",
"name": "test_bootstrap",
"version": null
},
{
"path": "/var/runtime",
"name": "test_lambda_runtime_client",
"version": null
},
{
"path": "/var/runtime",
"name": "test_lambda_runtime_marshaller",
"version": null
},
{
"path": "/var/runtime",
"name": "urllib3",
"version": "1.24.1"
},
{
"path": "/var/lang/lib/python3.7",
"name": "__future__",
"version": null
},
...
То, что я обнаружил, также отличалось от того, что они официально публикуют . На момент написания этого:
- Операционная система - Amazon Linux
- AMI - amzn-ami-hvm-2017.03.1.20170812-x86_64-gp2
- Ядро Linux - 4.14.77-70.59.amzn1.x86_64
- AWS SDK для JavaScript - 2.290.0 \
- SDK для Python (Boto 3) - 3-1.7.74 botocore-1.10.74
Установка
pip install pkgutil
Код
import pkgutil
for i in pkgutil.iter_modules(None): # returns a tuple (path, package_name, ispkg_flag)
print(i[1]) #or you can append it to a list
Пример вывода:
multiprocessing
netrc
nntplib
ntpath
nturl2path
numbers
opcode
pickle
pickletools
pipes
pkgutil
Вот решение кода Python, которое вернет список установленных модулей. Можно легко изменить код, чтобы включить номера версий.
import subprocess
import sys
from pprint import pprint
installed_packages = reqs = subprocess.check_output([sys.executable, '-m', 'pip', 'freeze']).decode('utf-8')
installed_packages = installed_packages.split('\r\n')
installed_packages = [pkg.split('==')[0] for pkg in installed_packages if pkg != '']
pprint(installed_packages)
Для тех, кто интересуется, как звонить pip list
из программы Python, вы можете использовать следующее:
import pip
pip.main(['list]) # this will print all the packages
Из скорлупы
ls site-packages
Если это не поможет, вы можете сделать это.
import sys
import os
for p in sys.path:
print os.listdir( p )
И посмотри, что это дает.