как узнать установленные модули python

Установленные библиотеки в Python 3

Небольшое справочное руководство позволяющие ответить на часто возникающий вопрос у новичков, какие установленные библиотеки в Python?

Введение

В процессе обучения программированию на языке Python новички частенько засоряют глобальное окружение языка установкой кучи разных библиотек. Но рано или поздно любопытство берет вверх и хочется посмотреть что там уже установлено. На самом деле задача очень простая и не стоит даже целой статьи, но все таки я часто вижу этот вопрос в телеграм каналах посвещенных Python разработке.

На самом деле существует два способа решения этой задачи, рассмотрим оба.

Способы посмотреть установленные библиотеки

Как я и сказал выше существует два способа проверить установленные библиотеки, рассмотрим их ниже

Используя pip

Самый простой, быстрый и эффективный вариант узнать какие библиотеки установлены в вашем Python выполнить следующую команду

Вывод программы можем быть весьма огромным как в моем случае. Мои установленные библиотеки :

Я очень долго не смотрел что у меня твориться в глобальном окружении, т.к часто пишу приложения для докер-контейнеров.

В глобальном окружении я стараюсь держать несколько библиотек, isort, flake8 и black.

Используя файловую систему

Python всегда устанавливает свои библиотеки в системную папку. Под рукой у меня сейчас есть только macOS и debian Linux, напишу пути для обоих OS

Заключение

Сегодня мы узнали как посмотреть установленные библиотеки в Python двумя разными способами, надеюсь вам понравилось — пишите комментарии.

Пожалуйста, прочитайте другие статьи посвященные языку программирования Python. Помножте свой опыт в программирования с практическими советами от разработчика.

Источник

Введение в Python

Поиск

Новое на сайте

Модули в Python

Система модулей позволяет вам логически организовать ваш код на Python. Группирование кода в модули значительно облегчает процесс написания и понимания программы. Говоря простым языком, модуль в Python это просто файл, содержащий код на Python. Каждый модуль в Python может содержать переменные, объявления классов и функций. Кроме того, в модуле может находиться исполняемый код.

Команда import в Python:

Вы можете использовать любой питоновский файл как модуль в другом файле, выполнив в нем команду import. Команда import в Python обладает следующим синтаксисом:

Когда интерпретатор Python встречает команду import, он импортирует (дает доступ) этот модуль, если он присутствует в пути поиска Python. Путь поиска Python это список директорий, в которых интерпретатор производит поиск перед попыткой загрузить модуль. Например, чтобы использовать модуль math следует написать:

Важно знать, что модуль загружается лишь однажды, независимо от того, сколько раз он был импортирован. Это препятствует цикличному выполнению содержимого модуля.

Однако это конструкцию следует использовать с осторожностью, поскольку при импортировании нескольких модулей можно запутаться в своем собственном коде.

Местонахождение модулей в Python:

Когда вы импортируете модуль, интерпретатор Python ищет этот модуль в следующих местах:

Директория, в которой находится файл, в котором вызывается команда импорта

Если модуль не найден, Python ищет в каждой директории, определенной в консольной переменной PYTHONPATH.

Если и там модуль не найден, Python проверяет путь заданный по умолчанию

Путь поиска модулей сохранен в системном модуле sys в переменной path. Переменная sys.path содержит все три вышеописанных места поиска модулей.

Получение списка всех модулей Python установленных на компьютере:

Для того, чтобы получить список всех модулей, установленных на вашем компьютере достаточно выполнить команду:

Через несколько секунд вы получите список всех доступных модулей.

Создание своего модуля в Python:

А во втором вызовем эту функцию:

Выполнив код второго файла получим:

Hello from module_1

Функция dir():

Встроенная функция dir() возвращает отсортированный список строк, содержащих все имена, определенные в модуле.

Архитектура программы на Python:

Код на Python может быть организован следующим образом:

Пакеты модулей в Python:

Отдельные файлы-модули с кодом на Python могут объединяться в пакеты модулей. Пакет это директория (папка), содержащая несколько отдельных файлов-скриптов.

Например, имеем следующую структуру:

В файле inside_file.py определена некая функция foo. Тогда чтобы получить доступ к функции foo, в файле my_file следует выполнить следующий код:

from my_package.inside_file import foo

Так же обратите внимание на наличие внутри директории my_package файла __init__.py. Это может быть пустой файл, который сообщает Python, что данная директория является пакетом модулей. В Python 3.3 и выше включать файл __init__.py в пакет модулей стало необязательно, однако, рекомендуется делать это ради поддержки обратной совместимости.

Источник

О порядке поиска пакетов и модулей для импорта в Python

Начать, видимо, следует с того, что речь пойдет об интерпретаторе CPython версии 2.7.x (примеры проверялись на версии 2.7.3).

Алгоритм поиска имен для import abcd

Поиск имени abcd для импорта происходит по следующему алгоритму:

Читайте также:  колонофиброскопия что это такое
Что ищем Где ищем* Комментарий
1 пакет abcd в пакете текущего модуля (модуля, в котором исполняется import abcd) только, если текущий модуль сам содержится в пакете**
2 модуль abcd в пакете текущего модуля (модуля, в котором исполняется import abcd) только, если текущий модуль сам содержится в пакете**
3 модуль abcd во встроенных (built-in) модулях ссылка на документацию указана в ***
4 пакет abcd в каталогах, указанных в sys.path ссылка на документацию указана в ****
5 модуль abcd в каталогах, указанных в sys.path ссылка на документацию указана в ****

Дальнейший поиск прекращается в случае успешного поиска пакета на одном из выше перечисленных шагов.

* Информация о приоритете поиска пакета над модулем установленая опытным путем, в документации это явно не указано.

** В этом случае переменная __package__ этого модуля равна названию пакета, иначе она равна None.
Ссылка на документцию:
docs.python.org/2/tutorial/modules.html#intra-package-references
“In fact, such references are so common that the import statement first looks in the containing package before looking in the standard module search path.”

(. ) Здесь стоит заметить отсутствие упоминания данного факта в другом месте того же документа (http://docs.python.org/2/tutorial/modules.html#the-module-search-path), что вводит в заблуждение (см. bugs.python.org/issue16891).

*** docs.python.org/2/tutorial/modules.html#the-module-search-path
“When a module named spam is imported, the interpreter first searches for a built-in module with that name.”

**** docs.python.org/2/tutorial/modules.html#the-module-search-path
“If not found, it then searches for a file named spam.py in a list of directories given by the variable sys.path.”

Алгоритм поиска имен для import abcd.defg

Сначала производится поиск пакета или модуля abcd в соответствии с алгоритмом, описанным для import abcd.

Если поиск успешный, то выполняется поиск пакета или модуля defg в соответствии со следующим алгоритмом:

Что ищем Где ищем* Комментарий
1 пакет defg в пакете abcd ссылка на документацию указана в **
2 модуль defg в пакете abcd ссылка на документацию указана в **

* В случае, если в результате поиска abcd, последний оказался модулем, то импорт закончится ошибкой ImportError: No module named defg, т.к. модуль не может содержать другие модули, либо пакеты:
docs.python.org/2/reference/simple_stmts.html#import: “A package can contain other packages and modules while modules cannot contain other modules or packages.”
** www.python.org/dev/peps/pep-0302/#id23
“Deeper down in the mechanism, a dotted name import is split up by its components. For «import spam.ham», first an «import spam» is done, and only when that succeeds is «ham» imported as a submodule of «spam».”

Алгоритм поиска имен для from abcd.defg import ghi

Сначала производится поиск пакета или модуля abcd.defg в соответствии с алгоритмом, описанным для import abcd.defg:

Что ищем Где ищем
1 имя ghi в пакете или модуле defg
2 пакет ghi в пакете defg
3 модуль ghi в пакете defg

Перекрытие имен

Хочу отметить одну интересную особенность, которая следует из последовательного применения перечисленных выше алгоритмов. Представьте следующую ситуацию: существует модуль с именем abcd и пакет с именем abcd, содержащий, в свою очередь, модуль defg, модуль abcd и пакет abcd размещены в разных каталогах, при этом модуль abcd размещен в том же пакете, что и модуль, в котором выполняется инструкция import abcd.defg. В этом случае выполнение импорта завершится с ошибкой. Это связано с тем, что интерпретатор Python сначала найдет модуль abcd, потом попытается искать в нем модуль defg, что невозможно.

Разумнее было бы определить из синтаксиса инструкции import, что abcd может быть только пакетом (т.к. все элементы до точки могут являться только пакетами) и искать abcd только как пакет. В этом случае пакет abcd был бы импортирован из другого каталога, а в нем был бы обнаружен модуль defg и выполнение программы продолжилось бы без ошибок.

Источник

Как получить список локально установленных модулей Python?

Я хотел бы получить список модулей Python, которые находятся в моей установке Python (сервер UNIX).

Как вы можете получить список модулей Python, установленных на вашем компьютере?

20 ответов

решение

как (слишком длинный) один лайнер:

область

мой прецедент

я добавил результат этого вызова на мой сервер колбы, поэтому, когда я вызываю его с http://example.com/exampleServer/environment Я получаю список пакетов, установленных на virtualenv сервера. Это делает отладку намного проще.

предостережения

воспроизведение:

мы должны вести себя так setup.py на /tmp/behave :

Установите пакет python из репозитория git

если мы запустим вышеупомянутое решение из /tmp

если мы запустим вышеупомянутое решение из /tmp/behave

behave==1.2.5a1 отсутствует во втором примере, потому что рабочий каталог содержит behave ‘ s setup.py файл.

Читайте также:  не меняется курсор мыши windows 10

я не смог найти ссылки на эту проблему в документации. Возможно, я открою для него жука.

в оболочке/приглашении Python.

теперь, эти способы я попробовал сам, и я получил именно то, что было объявлено: все модули.

увы, на самом деле вы не очень заботитесь о stdlib, вы знаете, что вы получаете с установкой python.

действительно, я хочу материал, который Я установлен.

что на самом деле, удивительно, сработало просто отлично:

Я говорю «удивительно», потому что инструмент установки пакета является точным место можно было бы ожидать, чтобы найти эту функциональность, хотя и не под названием «заморозить», но упаковка python настолько странная, что я поражен, что этот инструмент имеет смысл. Pip 0.8.2, Python 2.7.

на ipython вы можете типа » import Tab «.

в стандартном интерпретаторе Python вы можете ввести» help(‘modules’) «.

начиная с pip версии 1.3, у вас есть доступ к:

который кажется синтаксическим сахаром для «замораживания pip». В нем будут перечислены все модули, относящиеся к вашей установке или virtualenv, а также их номера версий. К сожалению, он не отображает текущий номер версии любого модуля, а также не моет посуду или чистит обувь.

Я просто использую это, чтобы увидеть используемые в настоящее время модули:

который показывает все модули, работающие на вашем python.

для всех встроенных модулей использование:

который является dict, содержащим все модули и объекты импорта.

в обычной оболочке просто используйте

Если нам нужно перечислить установленные пакеты в оболочке Python, мы можем использовать следующим образом

я столкнулся с пользовательским установленным python 2.7 на OS X. Это потребовало X11 для списка установленных модулей (как с помощью справки, так и с помощью pydoc).

чтобы иметь возможность перечислять все модули без установки X11, я запустил pydoc как http-сервер, т. е.:

тогда можно направить Safari в http://localhost:12345/ для просмотра всех модулей.

очень простой поиск с помощью pkgutil.iter_modules

в windows введите это в cmd

по состоянию на pip 10 принятый ответ больше не будет работать. Команда разработчиков удалила доступ к get_installed_distributions режим. Существует альтернативная функция setuptools за то же самое. Вот альтернативная версия, которая работает с Pip 10:

пожалуйста, дайте мне знать, если это будет или не будет работать в предыдущих версиях pip, тоже.

Помимо использования pip freeze я устанавливал желток в моих виртуальных сред.

для второй цели, пример кода:

это решение является основным на основе модулей importlib и pkgutil и работать с CPython 3.4 и CPython 3.5, но не имеет поддержки CPython 2.

объяснение

использование

для CPython3.4 (усечено)

в случае, если у вас есть распределение Anaconda python установлен, вы также можете использовать

в дополнение к описанным выше решениям.

pip freeze все ли это находит пакеты, однако можно просто написать следующую команду, чтобы перечислить все пути, где находятся пакеты python.

Я обычно использую pip list чтобы получить список пакетов (с версией).

это работает и в виртуальной среде, конечно.

есть много идей, первоначально я размышляю над этими двумя:

помочь («модули»)

минусы: вывод на консоль; со сломанными модулями (см. ubuntu. ) может обработка выхода онлайн / оффлайн

Мне нужен простой подход, используя базовые библиотеки и совместимый со старым python 2.x

в исходном каталоге документации в 2.5 скрыт небольшой скрипт, в котором перечислены все доступные модули для установки Python.

предназначен для работы на Python 1.5.2 и новее

исходный код действительно компактный, поэтому вы можете легко возиться с ним, например, передать список исключений багги-модулей (не попробуйте импортировать их)

из командной строки

Если это не поможет, вы можете сделать это.

Источник

Как я могу получить список локально установленных модулей Python?

Я хотел бы получить список модулей Python, которые находятся в моей установке Python (сервер UNIX).

Как вы можете получить список модулей Python, установленных на вашем компьютере?

ОТВЕТЫ

Ответ 1

Решение

Не используйте с pip> 10.0!

Как (слишком длинный) один лайнер:

Объем

Мой вариант использования

Я добавил результат этого вызова на свой флеш-сервер, поэтому, когда я вызываю его с помощью http://example.com/exampleServer/environment я получаю список пакетов, установленных на сервере virtualenv. Это делает отладку намного проще.

Предостережения

Действия по воспроизведению:

Мы ведем себя как setup.py в /tmp/behave :

Установите пакет python из репозитория git

Если мы запустим вышеупомянутое решение из /tmp

Если мы запустим вышеупомянутое решение из /tmp/behave

behave==1.2.5a1 отсутствует из второго примера, потому что рабочий каталог содержит behave setup.py файл.

Я не смог найти ссылки на этот вопрос в документации. Возможно, я открою ошибку для этого.

Читайте также:  кохлеарная имплантация что это такое у ребенка фото с пояснениями

Ответ 2

в командной строке Python.

Ответ 3

Теперь, эти методы я пробовал самостоятельно, и я получил именно то, что было рекламировано: Все модули.

Увы, действительно вам все равно, о stdlib, вы знаете, что у вас есть с установкой python.

На самом деле, я хочу, чтобы материал, который я установил.

Что на самом деле, на удивление, отлично работало:

Ответ 4

В ipython вы можете ввести » import Tab «.

В стандартном интерпретаторе Python вы можете ввести » help(‘modules’) «.

Ответ 5

Начиная с версии версии 1.3, у вас есть доступ к:

Кажется, что это синтаксический сахар для «замораживания контура». В нем будут перечислены все модули, относящиеся к вашей установке или virtualenv, а также их номера версий. К сожалению, он не отображает текущий номер версии любого модуля и не моет ваши блюда или не блещет вашими ботинками.

Ответ 6

Я просто использую это, чтобы видеть используемые в настоящее время модули:

который показывает все модули, запущенные на вашем питоне.

Для всех встроенных модулей используйте:

Что такое dict, содержащий все модули и объекты импорта.

Ответ 7

В обычной оболочке просто используйте

Ответ 8

Пожалуйста, дайте мне знать, будет ли это работать или не будет работать в предыдущих версиях pip.

Ответ 9

Если нам нужно вывести список установленных пакетов в оболочке Python, мы можем использовать команду help следующим образом

Ответ 10

Ответ 11

Очень простой поиск с использованием pkgutil.iter_modules

Ответ 12

Я столкнулся с пользовательским установленным python 2.7 на OS X. Он потребовал, чтобы X11 отображал установленные модули (как с помощью help, так и pydoc).

Чтобы иметь возможность перечислять все модули без установки X11, я запускал pydoc в качестве http-сервера, то есть:

Ответ 13

в окнах, введите это в cmd

Ответ 14

Это было вдохновлено ответом Адама Матана (принятым):

который затем распечатывает таблицу в виде

Заметка в стороне: я заметил, что когда я устанавливаю пакет один раз с помощью sudo и один раз без него, один имеет приоритет, так что другой не отображается в списке (отображается только одно местоположение). Я считаю, что в списке будет только один из них в локальном каталоге. Это может быть улучшено.

Ответ 15

Ответ 16

Для второй цели, пример кода:

Ответ 17

Это решение основано на модулях importlib и pkgutil и работает с CPython 3.4 и CPython 3.5, но не поддерживает CPython 2.

объяснение

Полный код

использование

Для CPython3.5 (усеченный)

Для CPython3.4 (усечено)

Ответ 18

Если у вас установлен дистрибутив anaconda python, вы также можете использовать

в дополнение к решениям, описанным выше.

Ответ 19

Ответ 20

pip freeze делает все, чтобы найти пакеты, однако можно просто написать следующую команду, чтобы перечислить все пути, в которых находятся пакеты python.

Ответ 21

Есть много способов снять кожу с кошки.

Но для получения дополнительной информации используйте инструмент под названием pip-date, который также сообщит вам даты установки.
pip install pip-date

Ответ 22

Есть много идей, вначале я размышляю над этими двумя:

зернышко

помочь ( «модули»)

минусы: вывод на консоль; со сломанными модулями (см. Ubuntu. ) можно segfault

Мне нужен простой подход, использующий базовые библиотеки и совместимый со старым Python 2.x

В каталоге исходных текстов документации в 2.5 скрыт небольшой скрипт, в котором перечислены все доступные модули для установки на Python.

использует только imp, sys, os, re, time

предназначен для работы на Python 1.5.2 и новее

исходный код действительно компактен, так что вы можете легко переделать его, например, передать список исключений с ошибочными модулями (не пытайтесь импортировать их)

Ответ 23

Мне нужно было найти конкретную версию пакетов, доступных по умолчанию в AWS Lambda. Я сделал это с коллажем идей с этой страницы. Я делюсь этим для потомков.

Я обнаружил, что предоставленная библиотека boto3 устарела, и я не виноват, что мой код не работает. Мне просто нужно было добавить boto3 и botocore в мой проект. Но без этого я бы бился головой, думая, что мой код плохой.

То, что я обнаружил, также отличалось от того, что они официально публикуют. На момент написания этого:

Ответ 24

Если вы используете Python 3

Я только что попробовал на Ubuntu, и, похоже, сработало

Debian/Ubuntu: sudo apt-get install python3-matplotlib

Fedora: sudo dnf install python3-matplotlib

Red Hat: sudo yum install python3-matplotlib

Ответ 25

Для тех, кто интересуется, как вызвать pip list из программы Python, вы можете использовать следующее:

Источник

Образовательный портал