- Как Python ищет импортируемый модуль
- Поиск импортируемого модуля
- Подключение модулей в Python
- Что такое модуль
- Исполняемый и подключаемый модуль
- Подключение модуля
- Обычное подключение — import
- Использование псевдонимов — as
- Импорт компонентов — from
- Перезагрузка библиотеки
- Подключение из другой папки
- Где хранятся модули Python?
- 4 ответа
- Введение в Python
- Поиск
- Новое на сайте
- Модули в Python
- Команда import в Python:
- Команда from . import в Python
- Команда from . import * в Python:
- Местонахождение модулей в Python:
- Получение списка всех модулей Python установленных на компьютере:
- Создание своего модуля в Python:
- Функция dir():
- Архитектура программы на Python:
- Пакеты модулей в Python:
Как Python ищет импортируемый модуль
Поиск импортируемого модуля
Примечание: в примерах ниже предполагается, что у вас уже есть файл с содержимым и именем, описанным в начале раздела «Определение модуля и его импорт»
Когда интерпретатор выполняет инструкцию import md , то начинается поиск файла md.py в списке каталогов, собранных из следующих источников:
- Каталог, из которого был запущен скрипт или текущий каталог, если интерпретатор выполняется в интерактивном режиме.
- Список каталогов, содержащихся в переменной окружения PYTHONPATH , если она задана. Формат PYTHONPATH зависит от операционной системы и чаще всего имитирует переменную среды PATH .
- Список каталогов, настроенных во время установки Python.
Результирующий путь поиска доступен в переменной Python sys.path модуля с именем sys :
Примечание: точное содержание sys.path зависит от операционной системы и установки языка Python и наверняка будет выглядеть немного иначе на вашем компьютере.
Чтобы быть уверенным, что модуль будет найден, нужно сделать одно из следующих действий:
- Перенести файл md.py в директорию, в которой находится запускаемый скрипт или расположить в текущей директории, из которой запущен интерпретатор.
- Перед запуском интерпретатора измените переменную среды PYTHONPATH , чтобы она содержала каталог, где находится файл mod.py
- Положите md.py в один из каталогов, уже содержащихся в переменной PYTHONPATH .
- Положите md.py в каталог, который был указан при установке интерпретатора Python.
На самом деле есть еще один дополнительный вариант: вы можете поместить файл модуля в любой каталог по вашему выбору, а затем изменить sys.path во время выполнения, чтобы он содержал этот каталог. Допустим, что файл модуля находится в каталоге /home/freeuser/modules/md.py , в этом случае нужно выполнить следующий код для того, что-бы импорт модуля выполнился удачно:
После импорта модуля можно определить его местоположение с помощью атрибута __file__ модуля:
Источник
Подключение модулей в Python
Язык программирования Python имеет много встроенных функций. Однако их не хватает для решения всех видов задач, поэтому программисты добавляют инструменты, подключая модули.
Что такое модуль
Это отдельный файл, содержащий какой-то код. Любой скрипт, написанный программистом на Python 3, можно назвать модулем. Он может быть как исполняемым, так и подключаемым. Исполняемый модуль содержит код, который самостоятельно выполняет какие-то действия, а подключаемый представляет из себя набор функций, классов и объектов, которые можно использовать для решения задач в другой программе.
Разделение программ на модули даёт ряд преимуществ:
- Программа имеет понятную структуру, что позволяет программисту легко ориентироваться в тысячах строк кода.
- Позволяют использовать одни и те же имена для функций, то есть не допускают пересечений имён.
- Программисту не нужно загружать скрипт большим количеством функций, большая часть которых не используется, достаточно подключить только нужные модули или их части.
Исполняемый и подключаемый модуль
Можно написать такой скрипт, который будет и выполнять какие-то действия (программа), и импортироваться в другие модули (библиотека).
Его важно правильно оформить:
- Весь исполняемый код помещается в функцию main() .
- Функция main() вызывается после условия:
Подключение модуля
Это можно сделать разными способами, выбор зависит только от нужд и желаний программиста.
Модули в Python — это файлы с расширением «.py». При импорте расширение опускается, интерпретатор и так знает, что после команды import следует имя модуля.
Программист может без проблем подключить любой модуль, который есть в стандартной библиотеке Python 3. Для подключения специфичных пользовательских инструментов сначала нужно их скачать. Обычно для этого используется пакетный менеджер pip.
Обычное подключение — import
Подключать модули желательно в самом вверху скрипта, используя ключевое слово «import», например import random .
После подключения программа получает доступ ко всем функциям, методам и классам, содержащимся в нём.
Программист может вызвать любую функцию из подключенной библиотеки используя префикс « имя_модуля. «. Пример: random.randint(1,15) где random — это библиотека, которую мы подключили, а randint — имя функции, которая в ней описана.
Этот способ не допускает пересечения имён, то есть программист может использовать одно и то же имя функции в скрипте, точно такое же, как и в подключаемой библиотеке и не бояться, что после её подключения, функция будет переопределена.
Вот полный пример использования инструкции import в Python 3:
Использование псевдонимов — as
Некоторые модули имеют длинное и неудобное название. Для удобства и сокращения количества кода программист может заменить его на своё.
Например, если написать « import random as rand «, то вместо длинного random для обращения к функциям библиотеки можно будет использовать короткое rand .
Импорт компонентов — from
Чтобы не захламлять программу большим количеством неиспользуемых инструментов, можно подключать не весь модуль, а какую-то его часть.
Например, программист хочет использовать только одну функцию из математической библиотеки math . Если он подключит всю библиотеку, то в скрипт добавится более 40 функций, которые будут занимать место. Чтобы добавить в проект какую-то часть, используют ключевое слово from :
Таким образом, основной скрипт получает доступ только к определённой функции. Кроме того, при таком подключении при вызове функций из подключённого модуля не используется префикс. Важно не забывать об этом, чтобы не допустить конфликта имён.
Можно подключить несколько функций сразу в одной строке. Для этого их надо перечислить через запятую.
Если после import написать символ звёздочки «*», подключится все содержимое модуля. Это считается плохим тоном, потому что может привести к совпадению имён из основного скрипта с именами из подключаемого. Но если программист уверен, что использовал уникальные названия для функций и переменных, теоретически он может использовать этот способ.
Перезагрузка библиотеки
За один сеанс модуль можно импортировать только один раз. Если программист после импорта, изменит в файле, который импортировал что-либо, а потом снова его импортирует, основная программа не будет видеть этих изменений.
Всё потому, что при импорте библиотека кешируется, когда её пытаются импортировать снова, интерпретатор Python просто использует сохранённую в кэше копию.
Если всё же необходимо перезагрузить модуль, на помощью приходит функция reload() из стандартной библиотеки importlib. Перезагрузка не влияет на объекты, ссылающиеся на импортированный модуль, и позволяет реализовать динамическую перезагрузку компонентов программы.
Подключение из другой папки
Библиотеки подключаются очень просто, когда интерпретатор Python знает, где их искать. Python ищет модули:
- В папке исполняемого скрипта.
- Во встроенных модулях (built-in).
- В директориях, определённых в sys.path (также содержит переменную PYTHONPATH).
Чтобы импортировать модуль из другой папки в Python 3, можно сделать следующее:
- Добавить путь к папке с модулем с помощью команды библиотеки sys —
- Или переместить модуль в папку, определённую в путях поиска интерпретатора Python.
Для того чтобы директория, содержащая файлы, определялась как пакет, в неё необходимо добавить файл __init__.py. Он показывает интерпретатору Python, что папка — это пакет с модулями.
Начиная с версии Python 3.3, добавлять файл __init__.py в директорию больше не нужно, интерпретатор Python считает все папки пакетами.
Источник
Где хранятся модули Python?
Я недавно начал изучать Python, и у меня есть 2 вопроса, касающихся модулей.
- Есть ли способ получить список доступных модулей Python (т.е. установленных) на компьютере?
- Я использую Ubuntu Karmic и Synaptic для управления пакетами. Я только что установил модуль Python. Где на самом деле хранится код модуля на моей машине? (есть ли [рекомендуемое] место по умолчанию для хранения модулей)?
4 ответа
1) Есть ли способ получить список Доступны модули Python (т.е. установлен) на машине?
Это работает для меня:
2) Где на самом деле код модуля хранится на моей машине?
Обычно в /lib/site-packages в вашей папке Python. (По крайней мере, в Windows.)
Вы можете использовать sys.path , чтобы узнать, в каких каталогах ищутся модули.
Вы можете просто ввести print(module_name.__file__)
- Вы можете перебирать каталоги, перечисленные в sys.path , чтобы найти все модули (кроме встроенных).
- Вероятно, это будет где-то рядом с /usr/lib/pythonX.X/site-packages (снова см. sys.path ). И подумайте об использовании собственного управления пакетами Python (через pip или easy_install , а также yolk ) вместо этого пакеты в репозиториях, поддерживаемых дистрибутивами Linux, как правило, устарели.
1) Использование функции справки
Войдите в приглашение python и введите следующую команду:
В этом списке будут перечислены все модули, установленные в системе. Вам не нужно устанавливать никаких дополнительных пакетов для их перечисления, но вам нужно вручную искать или фильтровать нужный модуль из списка.
2) Использование pip freeze
Несмотря на то, что для этого вам нужно установить дополнительные пакеты, этот метод позволяет легко искать или фильтровать результат с помощью команды grep , например pip freeze | grep feed
Вы можете использовать любой удобный для вас метод.
Источник
Введение в Python
Поиск
Новое на сайте
Модули в Python
Система модулей позволяет вам логически организовать ваш код на Python. Группирование кода в модули значительно облегчает процесс написания и понимания программы. Говоря простым языком, модуль в Python это просто файл, содержащий код на Python. Каждый модуль в Python может содержать переменные, объявления классов и функций. Кроме того, в модуле может находиться исполняемый код.
Команда import в Python:
Вы можете использовать любой питоновский файл как модуль в другом файле, выполнив в нем команду import. Команда import в Python обладает следующим синтаксисом:
Когда интерпретатор Python встречает команду import, он импортирует (дает доступ) этот модуль, если он присутствует в пути поиска Python. Путь поиска Python это список директорий, в которых интерпретатор производит поиск перед попыткой загрузить модуль. Например, чтобы использовать модуль math следует написать:
Важно знать, что модуль загружается лишь однажды, независимо от того, сколько раз он был импортирован. Это препятствует цикличному выполнению содержимого модуля.
Команда from . import в Python
Команда from . import позволяет вам импортировать не весь модуль целиком, а только определенное его содержимое. Например:
Выражение from . import не импортирует весь модуль, а только предоставляет доступ к конкретным объектам, которые мы указали.
Команда from . import * в Python:
В Python так же возможно импортировать всё (переменные, функции, классы) за раз из модуля, для этого используется конструкция from . import *. Например:
Однако это конструкцию следует использовать с осторожностью, поскольку при импортировании нескольких модулей можно запутаться в своем собственном коде.
Местонахождение модулей в Python:
Когда вы импортируете модуль, интерпретатор Python ищет этот модуль в следующих местах:
Директория, в которой находится файл, в котором вызывается команда импорта
Если модуль не найден, Python ищет в каждой директории, определенной в консольной переменной PYTHONPATH.
Если и там модуль не найден, Python проверяет путь заданный по умолчанию
Путь поиска модулей сохранен в системном модуле sys в переменной path. Переменная sys.path содержит все три вышеописанных места поиска модулей.
Получение списка всех модулей Python установленных на компьютере:
Для того, чтобы получить список всех модулей, установленных на вашем компьютере достаточно выполнить команду:
Через несколько секунд вы получите список всех доступных модулей.
Создание своего модуля в Python:
Чтобы создать свой модуль в Python достаточно сохранить ваш скрипт с расширением .py Теперь он доступен в любом другом файле. Например, создадим два файла: module_1.py и module_2.py и сохраним их в одной директории. В первом запишем:
А во втором вызовем эту функцию:
Выполнив код второго файла получим:
Hello from module_1
Функция dir():
Встроенная функция dir() возвращает отсортированный список строк, содержащих все имена, определенные в модуле.
Архитектура программы на 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 в пакет модулей стало необязательно, однако, рекомендуется делать это ради поддержки обратной совместимости.
Источник