Ожидается, что обычная установка сможет работать без какой-либо переменной окружения PYTHONPATH
.Как объяснено в документации, для пользователя существует PYTHONPATH
, чтобы…
Дополнить путь поиска по умолчанию для файлов модулей.Формат такой же, как у PATH оболочки: одно или несколько путей к каталогам, разделенных os.pathsep (например, двоеточия в Unix или точки с запятой в Windows).Несуществующие каталоги игнорируются.
Таким образом, ни один из стандартных установщиков Python (включая сборку локально и под управлением make install
, а также двоичные установщики Windows и macOS доступны в разделе Загрузки на python.org) сделать что-нибудь, чтобы создать PYTHONPATH
значение или настроить его в вашей среде.И большинство полуофициальных и сторонних пакетов (например, Pythons включает или упаковываются в дистрибутивы Linux и Apple, установщики менее распространенных платформ в разделе Downloads / Other, «батареи плюс» дистрибутивы Python, такие как Anaconda и т. Д.), Будут работатьтаким же образом.
Обратите внимание, что каталоги PYTHONPATH
добавляются в путь поиска по умолчанию.Как отмечено в тех же документах:
Путь поиска по умолчанию зависит от установки, но обычно начинается с префикса / lib / pythonversion (см. PYTHONHOME выше).Он всегда добавляется к PYTHONPATH.
Дополнительный каталог будет вставлен в путь поиска перед PYTHONPATH, как описано выше в разделе Параметры интерфейса.Путь поиска может управляться из программы Python как переменная sys.path.
Это также объясняется в sys.path
:
Список строк, который указывает путь поиска для модулей.Инициализируется из переменной среды PYTHONPATH, плюс зависящее от установки значение по умолчанию.
При инициализации при запуске программы первый элемент этого списка, путь [0], является каталогом, содержащим скрипт, который использовался для вызоваИнтерпретатор Python.Если каталог скриптов недоступен (например, если интерпретатор вызывается в интерактивном режиме или если скрипт читается из стандартного ввода), path [0] является пустой строкой, которая направляет Python для поиска модулей в текущем каталоге в первую очередь.Обратите внимание, что каталог сценариев вставляется перед записями, вставленными в результате PYTHONPATH.
…
См. Также Модуль site
Здесь описывается, как использовать файлы .pth.для расширения sys.path.
В отличие от PYTHONPATH
, этот site
механизм иногда используется сторонними и полуофициальными установками.Например, Apple использует его для добавления библиотеки Extras
предустановленных пакетов, таких как pyobjc
, во встроенный Python 2.7 на macOS.
Если вам интересно, как это зависит от установкиdefault "загружается модулем sys
в CPython, в конечном итоге сводится к общедоступной функции C API, Py_GetPath
:
Возвращает путь поиска модуля по умолчанию;это вычисляется из имени программы (установленного Py_SetProgramName () выше) и некоторых переменных окружения.Возвращаемая строка состоит из серии имен каталогов, разделенных символом разделителя, зависящим от платформы.Символ разделителя: ':' в Unix и Mac OS X, ';'на винде.Возвращенная строка указывает на статическое хранилище;вызывающая сторона не должна изменять свое значение.Список sys.path
инициализируется этим значением при запуске интерпретатора;его можно (и обычно) изменить позже, чтобы изменить путь поиска для загрузки модулей.
Если вы хотите увидеть, как работает код C, вы, вероятно, захотите начать с _PyPathConfig_Init
, потому что фактический Py_GetPath
просто вызывает функцию, которая проверяет, был ли он вызван, а затем извлекает значение из структуры, которую он устанавливает.