Как узнать модули python

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

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

Введение

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

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

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

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

Используя pip

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

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

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

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

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

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

Заключение

Сегодня мы узнали как посмотреть установленные библиотеки в 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. Смотреть картинку Как узнать модули python. Картинка про Как узнать модули python. Фото Как узнать модули python

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

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

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

Как узнать модули python. Смотреть фото Как узнать модули python. Смотреть картинку Как узнать модули python. Картинка про Как узнать модули python. Фото Как узнать модули python

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

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

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

Hello from module_1

Функция dir():

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

Как узнать модули python. Смотреть фото Как узнать модули python. Смотреть картинку Как узнать модули python. Картинка про Как узнать модули python. Фото Как узнать модули python

Архитектура программы на 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

Как узнать модули python. Смотреть фото Как узнать модули python. Смотреть картинку Как узнать модули python. Картинка про Как узнать модули python. Фото Как узнать модули python

О чём пойдёт речь

Как вы, возможно знаете, код на Python хранится в модулях (modules), которые могут быть объединены в пакеты (packages). Это руководство призвано подробно рассказать именно о пакетах, однако совсем не упомянуть модули нельзя, поэтому я немного расскажу и о них. Многое из того, что применимо к модулям, справедливо и для пакетов, особенно если принять во внимание тот факт, что каждый, как правило, ведёт себя как модуль.

Кратко о модулях

Модуль в Python — это файл с кодом. Во время же исполнения модуль представлен соответствующим объектом, атрибутами которого являются:

При этом определения и импортированные сущности ничем друг от друга не отличаются: и то, и другое — это всего лишь именованные ссылки на некоторые объекты первого класса (такие, которые могут быть переданы из одного участка кода в другой как обычные значения).

Такое единообразие удобно, например, при рефакторинге: мы можем разделить один разросшийся модуль на несколько, а потом импортировать вынесенные определения в оригинальный модуль. При этом с точки зрения внешнего наблюдателя переработанный модуль будет иметь те же атрибуты, которые имел до внесения изменений, а значит у пользователей модуля ничего в коде не сломается.

Модули и видимость содержимого

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

Так атрибуты, имя которых начинается с одиночного подчёркивания, считаются как бы помеченными «для внутреннего использования», и обычно не отображаются в IDE при обращению к объекту «через точку». И linter обычно предупреждает об использовании таких атрибутов, мол, «небезопасно!». «Опасность» состоит в том, что автор кода имеет полное право изменять состав таких атрибутов без уведомления пользователей кода. Поэтому программист, использовавший в своём коде приватные части чужого кода рискует в какой-то момент получить код, который перестанет работать при обновлении сторонней библиотеки.

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

Живой пример видимости атрибутов модулей.

Рассмотрим пример, демонстрирующий всё вышеописанное. Пусть у нас будет два файла:

А эти атрибуты не будут видны:

Импорт import other_module я не рассматриваю как тривиальный случай.

Теперь рассмотрим импорт всего содержимого module:

Последствия импорта from other_module import * тоже очевидны и я их не рассматриваю.

Наконец-то, пакеты!

Импортирование пакетов

Пакет с единственным модулем __init__.py при импорте ведёт себя как обычный модуль. Содержимое инициализирующего модуля определяет атрибуты объекта пакета.

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

Рассмотрим, к примеру, следующую структуру директорий и файлов:

Так что же, если мы загрузим парочку вложенных модулей, то для каждого будет выполняться загрузка всех __init__.py по дороге? Не будет! Подсистема интерпретатора, отвечающая за загрузку модулей, кэширует уже загруженные пакеты и модули. Каждый конкретный модуль загружается ровно один раз, в том числе и инициализирующие модули __init__.py (короткие имена модулей хоть и одинаковы, но полные имена всегда разные). Все последующие импортирования модуля не приводят к его загрузке, только лишь нужные атрибуты копируются в соответствующие области видимости.

Пакеты и __all__

Вот структура пакета:

Файл же package/__init__.py содержит следующее (и только это!):

Указанный автоматизм достаточно ограничен: не работает «вглубь», например — не импортирует «через звёздочку» указанные модули и подпакеты. Если же вам вдруг такого захочется, вы всегда сможете на соответствующих уровнях в __init__.py сделать from x import * и получить в корневом пакете плоскую область видимости со всем нужным содержимым. Но такое нужно довольно редко, потому что «не помогает» ни IDE, ни ручному поиску по коду. Впрочем, знать о фиче и иметь её в виду — не вредно, как мне кажется.

Изучайте Python на Хекслете Первые курсы в профессии Python-программист доступны бесплатно сразу после регистрации. Начните сегодня, учитесь в комфортном для вас темпе.

Пакеты, модули и точки входа

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

PEP 420, или неявные пространства имён

Раз уж развёл ликбез, расскажу и про эту штуку.

Долгое время в Python пакеты были обязаны иметь файл __init__.py — наличие этого файла позволяло отличить пакет от обычной директории с модулями (с которыми Python работать не мог). Но с версии Python3.3 вступил в силу PEP 420, позволяющий создавать пространства имён «на вырост».

Тут стоит отметить, что с полноценными пакетами подобное не срабатывало ранее и не будет работать в будущем. Если среди путей пакет с модулем инициализации находится в первый раз, все последующие пакеты с тем же именем будут проигнорированы. Это защищает вас от смешивания сторонних пакетов с системными. И даже просто от ошибок именования: назвав пакет так же, как называется встроенный пакет или модуль, вы получите ошибку — ваши определения не будут импортироваться.

Пакеты — пространства имён (Namespace Packages, NP) — а именно так называются пакеты без инициализации — не могут объединяться с полноценными пакетами, поэтому добавить что-то в системный пакет вам также не удастся. И тут всё защищено!

Важно: помните, если встретятся обычный пакет и NP с одинаковым именем, то победит обычный пакет! А NP, сколько бы их не было, не будут загружены!

Циклические импорты

Если же приспичивает, и импортировать что-то «ну очень нужно», то можно попробовать обойтись локальным импортом:

Да, это костыль. Но иногда полезный. В идеале — до ближайшего большого рефакторинга. Поэтому настраивайте linter на ловлю локальных импортов и стремитесь убирать такие костыли хоть когда-нибудь!

Поиск пакетов и модулей

Пайтон ищет модули и пакеты в директориях, во время исполнения перечисленных в списке sys.path — по порядку от первого пути к последнему.

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

Обычно пути трогать не нужно, всё вполне нормально «работает само». Но если очень хочется, то путей у вас несколько:

Первый способ — простой и понятный. Не сложнее добавления пути до исполняемых файлов в PATH (даже синтаксис тот же).

Кстати, когда вы используете виртуальные окружения, sys.path будет содержать пути до локальных копий стандартных библиотек. Именно это позволяет виртуальному окружению быть самодостаточным (работать на любой машине с подходящей ОС — даже без установленного в систему Python!).

Что не было раскрыто?

Я специально не стал рассказывать про

Темы эти насколько интересны, настолько и велики. На наше счастье, самим разбираться в такой тонкой и сложной машинерии приходится редко. Мы просто пользуемся готовыми магическими артефактами, а зачаровывают их другие 🙂 Если же вы захотите научиться магии, документация вам в руки.

Источник

Как проверить, установлен ли модуль в Python, и установить его при необходимости?

В терминале после запуска Python, как я узнаю, какие модули присутствуют в python? Предположим, мне нужно изучить модули NumPy и SciPy.

Как узнать, установлен ли модуль Python в системе или нет: вы можете сделать очень простой тест в терминале,

Как я буду устанавливать его, если он не установлен

Вы можете установить определенный модуль, загрузив соответствующие пакеты из хранилища, например, вы можете установить scipy как,

Предупреждение: Настоятельно рекомендуется устанавливать python-модули, используя только официальный репозиторий Ubuntu, и не использовать pip метод в качестве суперпользователя (то есть, как root или используя sudo ). В некоторых случаях это может сделать вашу систему непригодной для использования, нарушив системный python.

В случае, если мы не хотим нежелательно импортировать соответствующий модуль (что может произойти в try выражении), мы можем использовать его sys.modules для тестирования модулей, которые были установлены и были импортированы ранее.

В выпуске оболочки Python:

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

Обратите внимание, что только те модули, которые были импортированы прежде, дают True в этом тесте, все другие модули (даже если установлены) приводят к False.

Другая альтернатива try с import заявлением в консоли питона называют встроенную help() функцию. Это не даст документацию для неустановленных модулей, например

Теперь для установки отсутствующих модулей рекомендуется использовать управление пакетами Ubuntu (а не путь Python), потому что нам нужен root-доступ, а также чтобы не испортить нашу сильно Python-зависимую систему. Для рассматриваемого модуля это будет, например:

Источник

Как я могу получить список локально установленных модулей 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

Как узнать модули python. Смотреть фото Как узнать модули python. Смотреть картинку Как узнать модули python. Картинка про Как узнать модули python. Фото Как узнать модули python

Ответ 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, вы можете использовать следующее:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *