Сообщить об ошибке.

Каталоги и пути интерпретатора Python

Установка специфичных каталогов и путей для программы

Следующие переменные модуля sys предоставляют информацию о каталогах и путях интерпретатора Python из кода.

Содержание:

  • Специфичный для программы каталог Python sys.prefix,
  • Каталог установки Python sys.base_prefix,
  • Каталог для конкретной программы sys.exec_prefix,
  • Каталог базовой установки Python sys.base_exec_prefix,
  • Путь исполняемого файла интерпретатора Python sys.executable,
  • Имя каталога библиотеки для конкретной платформы sys.platlibdir.

sys.prefix:

Атрибут sys.prefix это строка, предоставляет специфичный для площадки префикс каталога, в котором установлены независимые от платформы файлы Python. По умолчанию, это строка '/usr/local'.

Значение sys.prefix устанавливается во время сборки Python с помощью аргумента --prefix для скрипта configure, например $ ./configure --prefix=/opt/python-3.x.x/". Основная коллекция модулей библиотеки Python установлена в каталоге prefix/lib/pythonX.Y, а независимые от платформы заголовочные файлы (все, кроме pyconfig.h) хранятся в prefix/include/pythonX.Y, где XY - номер версии Python, например 3.7.

Примечание. Если запущена виртуальная среда, это значение будет изменено в site.py для указания на виртуальную среду. Значение для установки Python по-прежнему будет доступно через base_prefix.

sys.base_prefix:

Атрибут sys.base_prefix устанавливается при запуске Python перед запуском site.py то же значение, что и атрибут sys.prefix. Если не работает в виртуальной среде, значения останутся прежними. Если site.py обнаружит, что используется виртуальная среда, то значения sys.prefix и sys.exec_prefix будут изменены на значения установки виртуальной среды, тогда как sys.base_prefix и sys.base_exec_prefix останутся указывать на базовую установку Python (ту, из которой была создана виртуальная среда).

sys.exec_prefix:

Атрибут sys.exec_prefix это строка, задает префикс каталога для конкретной программы, где установлены зависящие от платформы файлы Python. По умолчанию это '/usr/local'.

Значение sys.prefix устанавливается во время сборки Python с помощью аргумента --exec-prefix для скрипта configure. В частности, все файлы конфигурации (например, заголовочный файл pyconfig.h) установлены в каталоге exec_prefix/lib/pythonX.Y/config, а модули разделяемой библиотеки установлены в exec_prefix/lib/pythonX.Y/lib-dynload, где XY номер версии Python, например 3.7.

Примечание. Если запущена виртуальная среда, то значение sys.exec_prefix будет изменено в site.py для указания на виртуальную среду. Значение базовой установки Python по-прежнему будет доступно через атрибут sys.base_exec_prefix.

sys.base_exec_prefix:

Атрибут sys.exec_prefix устанавливает при запуске Python до запуска site.py то же значение, что и sys.exec_prefix. Если программа не работает в виртуальной среде, то значения останутся прежними. Если site.py обнаружит, что используется виртуальная среда, то значения sys.prefix и sys.exec_prefix будут изменены на значения установки виртуальной среды, тогда как sys.base_prefix и sys.base_exec_prefix останутся указывать на базовую установку Python (ту, из которой была создана виртуальная среда).

sys.executable:

Атрибут sys.executable это строка, задающая абсолютный путь исполняемого двоичного файла для интерпретатора Python в системах, где это имеет смысл. Если Python не может получить реальный путь к своему исполняемому файлу, sys.executable будет пустой строкой или None.

sys.platlibdir:

Атрибут sys.exec_prefix это имя каталога библиотеки для конкретной платформы. Он используется для построения пути к стандартной библиотеке и путей установленных модулей расширения. (Новое в Python 3.9.)

На большинстве платформ он равен lib. В Fedora и SuSE на 64-битных платформах он равен lib64, что дает следующие пути sys.path (где X.Y - версия Python major.minor):

  • /usr/lib64/pythonX.Y/: Стандартная библиотека (например, os.py модуля os),
  • /usr/lib64/pythonX.Y/lib-dynload/: модули расширения языка C стандартной библиотеки (например, модуль errno, точное имя файла зависит от платформы),
  • /usr/lib/pythonX.Y/site-packages/ (всегда используйте lib, а не sys.platlibdir): сторонние модули,
  • /usr/lib64/pythonX.Y/site-packages/: модули расширения языка C сторонних пакетов.