Изменение пути поиска в Python
Когда интерпретатор Python выполняет оператор import , он ищет как код Python, так и модули расширения по пути поиска. Значение по умолчанию для пути настраивается в двоичном файле Python при сборке интерпретатора. Вы можете определить путь, импортировав модуль sys и напечатав значение sys.path .
$ python Python 2.2 (#11, Oct 3 2002, 13:31:27) [GCC 2.96 20000731 (Red Hat Linux 7.3 2.96-112)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> sys.path ['', '/usr/local/lib/python2.3', '/usr/local/lib/python2.3/plat-linux2', '/usr/local/lib/python2.3/lib-tk', '/usr/local/lib/python2.3/lib-dynload', '/usr/local/lib/python2.3/site-packages'] >>>
Нулевая строка в sys.path представляет текущий рабочий каталог.
Ожидаемое соглашение для локально установленных пакетов состоит в том, чтобы поместить их в каталог . /site-packages/ , но вы можете захотеть установить модули Python в какой-нибудь произвольный каталог. Например, на вашем сайте может быть принято соглашение о хранении всего программного обеспечения, связанного с веб-сервером, в каталоге /www . Дополнительные модули Python могут принадлежать /www/python , и для их импорта этот каталог должен быть добавлен в sys.path . Существует несколько различных способов добавления каталога.
Самый удобный способ — добавить файл конфигурации пути в каталог, который уже указан в пути Python, обычно в каталог . /site-packages/ . Файлы конфигурации пути имеют расширение .pth , и каждая строка должна содержать один путь, который будет добавлен к sys.path . (Поскольку новые пути добавляются к sys.path , модули в добавленных каталогах не будут переопределять стандартные модули. Это означает, что вы не можете использовать этот механизм для установки фиксированных версий стандартных модулей.)
Пути могут быть абсолютными или относительными, и в этом случае они относятся к каталогу, содержащему файл .pth .Дополнительную информацию см. в документации модуля site .
Чуть менее удобный способ — отредактировать файл site.py в стандартной библиотеке Python и изменить sys.path . site.py автоматически импортируется при выполнении интерпретатора Python, если только параметр -S не указан для подавления этого поведения. Таким образом, вы можете просто отредактировать site.py и добавить в него две строки:
import sys sys.path.append('/www/python/')
Однако, если вы переустановите ту же основную версию Python (например, при обновлении с 2.2 до 2.2.2), site.py будет перезаписан стандартной версией. Вы должны помнить, что он был изменен, и сохранить копию перед установкой.
Есть две переменные среды, которые могут изменять sys.path . PYTHONHOME устанавливает альтернативное значение для префикса установки Python. Например, если PYTHONHOME задано значение /www/python , путь поиска будет иметь значение [», ‘/www/python/lib/pythonX.Y/’, ‘/www/python/lib/pythonX.Y/plat-linux2’, . ] .
В переменной PYTHONPATH можно указать список путей, которые будут добавлены в начало sys.path . Например, если для PYTHONPATH установлено значение /www/python:/opt/py , путь поиска будет начинаться с [‘/www/python’, ‘/opt/py’] . (Обратите внимание, что каталоги должны существовать, чтобы их можно было добавить в sys.path ; модуль site удаляет несуществующие пути.)
Наконец, sys.path — это обычный список Python, поэтому любое приложение Python может изменять его, добавляя или удаляя записи.
Файлы конфигурации Distutils
Как упоминалось выше,вы можете использовать конфигурационные файлы Distutils для записи личных предпочтений или предпочтений сайта для любых опций Distutils.То есть,любой параметр любой команды может быть сохранен в одном из двух или трех (в зависимости от вашей платформы)конфигурационных файлов,которые будут просмотрены перед разбором командной строки.Это означает,что конфигурационные файлы отменяют значения по умолчанию,а командная строка,в свою очередь,отменяет конфигурационные файлы.Более того,если используется несколько конфигурационных файлов,значения из «более ранних» файлов отменяются «более поздними» файлами.
Расположение и имена файлов конфигурации
Имена и расположение конфигурационных файлов немного отличаются на разных платформах.На Unix и macOS три конфигурационных файла (в порядке их обработки)следующие: