Spec-Zone.ru › Python 3.13

Инициализация пути поиска модулей sys.path

Путь поиска модулей инициализируется при запуске Python. К этому пути поиска модулей можно обратиться через sys.path.

Первым элементом пути поиска модулей является каталог, содержащий входной скрипт, если он есть. В противном случае первым элементом является текущий каталог — так происходит при запуске интерактивной оболочки, команды -c или модуля -m.

Переменная окружения PYTHONPATH часто используется для добавления каталогов в путь поиска. Если эта переменная окружения задана, её содержимое добавляется в путь поиска модулей.

Примечание

PYTHONPATH влияет на все установленные версии и среды Python. Будьте осторожны, задавая её в профиле оболочки или глобальных переменных окружения. Модуль site предоставляет более гибкие способы настройки, описанные ниже.

Следующими добавляются каталоги, содержащие стандартные модули Python, а также любые модули расширения, от которых зависят эти модули. Модули расширения — это файлы .pyd в Windows и файлы .so на других платформах. Каталог с независимыми от платформы модулями Python называется prefix. Каталог с модулями расширения называется exec_prefix.

Переменную окружения PYTHONHOME можно использовать для задания расположений prefix и exec_prefix. В противном случае эти каталоги находятся с помощью исполняемого файла Python в качестве начальной точки, после чего выполняется поиск различных файлов и каталогов-маркеров. Обратите внимание, что все символические ссылки прослеживаются, поэтому в качестве начальной точки поиска используется реальное расположение исполняемого файла Python. Расположение исполняемого файла Python называется home.

После определения home каталог prefix находится путём поиска pythonmajorversionminorversion.zip (python311.zip). В Windows zip-архив ищется в home, а в Unix ожидается, что архив находится в lib. Обратите внимание, что ожидаемое расположение zip-архива добавляется в путь поиска модулей, даже если архива не существует. Если архив не найден, Python в Windows продолжит поиск prefix, проверяя наличие Lib\os.py. Python в Unix будет искать lib/pythonmajorversion.minorversion/os.py (lib/python3.11/os.py). В Windows prefix и exec_prefix совпадают, однако на других платформах выполняется поиск lib/pythonmajorversion.minorversion/lib-dynload (lib/python3.11/lib-dynload), который используется в качестве опорной точки для exec_prefix. На некоторых платформах lib может иметь значение lib64 или другое значение; см. sys.platlibdir и PYTHONPLATLIBDIR.

После обнаружения prefix и exec_prefix доступны соответственно через sys.prefix и sys.exec_prefix.

Наконец, обрабатывается модуль site, а в путь поиска модулей добавляются каталоги site-packages. Распространённый способ настройки пути поиска — создание модулей sitecustomize или usercustomize, как описано в документации модуля site.

Примечание

Некоторые параметры командной строки могут дополнительно влиять на вычисление путей. Подробнее см. -E, -I, -s и -S.

Виртуальные среды

Если Python запускается в виртуальной среде (описанной в разделе Виртуальные среды и пакеты), то prefix и exec_prefix относятся к этой виртуальной среде.

Если файл pyvenv.cfg найден рядом с основным исполняемым файлом или в каталоге на один уровень выше него, применяются следующие изменения:

  • Если home — абсолютный путь, а PYTHONHOME не задана, этот путь используется вместо пути к основному исполняемому файлу при определении prefix и exec_prefix.

Файлы _pth

Чтобы полностью переопределить sys.path, создайте файл ._pth с тем же именем, что у общей библиотеки или исполняемого файла (python._pth или python311._pth). В Windows путь к общей библиотеке всегда известен, однако на других платформах он может быть недоступен. В файле ._pth укажите по одному пути в каждой строке, чтобы добавить их в sys.path. Файл, основанный на имени общей библиотеки, имеет приоритет над файлом, основанным на имени исполняемого файла; это позволяет при необходимости ограничить пути для любой программы, загружающей среду выполнения.

Если такой файл существует, все переменные реестра и окружения игнорируются, включается изолированный режим, а модуль site не импортируется, если только в одной из строк файла не указано import site. Пустые пути и строки, начинающиеся с #, игнорируются. Каждый путь может быть абсолютным или относительным к расположению файла. Инструкции импорта, кроме импорта site, не разрешены, также нельзя указывать произвольный код.

Обратите внимание, что файлы .pth (без начального символа подчёркивания) будут обрабатываться модулем site обычным образом, если задан параметр import site.

Встраивание Python

Если Python встраивается в другое приложение, для его инициализации можно использовать Py_InitializeFromConfig() и структуру PyConfig. Сведения о настройке путей приведены в разделе Настройка путей Python.

См. также

  • Поиск модулей — подробные сведения о Windows.
  • Использование Python на платформах Unix — сведения о Unix.

© 2001–2025 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/library/sys_path_init.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API