site — Модуль конфигурации сайта
Исходный код: Lib/site.py
Этот модуль автоматически импортируется во время инициализации. Автоматический импорт можно отключить, используя опцию интерпретатора -S.
Импорт этого модуля добавит пути, специфичные для сайта, в путь поиска модулей и добавит несколько встроенных функций, если не была использована опция -S. В этом случае модуль можно безопасно импортировать без автоматических изменений пути поиска модулей или добавления встроенных функций. Для явного запуска обычных добавлений, специфичных для сайта, вызовите функцию site.main().
Изменено в версии 3.3: Импорт модуля раньше вызывал манипуляции с путями даже при использовании опции -S.
Он начинает с построения до четырёх каталогов из части головы и части хвоста. Для части головы он использует sys.prefix и sys.exec_prefix; пустые части головы пропускаются. Для части хвоста он использует пустую строку и затем lib/site-packages (в Windows) или lib/pythonX.Y/site-packages (в Unix и Macintosh). Для каждой из уникальных комбинаций голова-хвост он проверяет, является ли это существующим каталогом, и если да, добавляет его в sys.path и также проверяет добавленный путь на наличие конфигурационных файлов.
Изменено в версии 3.5: Поддержка каталога “site-python” была удалена.
Если файл с именем “pyvenv.cfg” существует в каталоге выше sys.executable, sys.prefix и sys.exec_prefix устанавливаются на этот каталог, и также проверяется наличие каталога site-packages (sys.base_prefix и sys.base_exec_prefix всегда будут «настоящими» префиксами установки Python). Если “pyvenv.cfg” (файл конфигурации загрузки) содержит ключ “include-system-site-packages” с любым значением, кроме “false” (регистронезависимо), то будут также проверяться системные префиксы в поисках site-packages; иначе они не будут проверяться.
Файл конфигурации пути — это файл, имя которого имеет вид name.pth и существует в одном из четырёх каталогов, упомянутых выше; его содержимое — дополнительные элементы (по одному на строке), которые нужно добавить в sys.path. Отсутствующие элементы никогда не добавляются в sys.path, и не проверяется, является ли элемент каталогом, а не файлом. Ни один элемент не добавляется в sys.path более одного раза. Пустые строки и строки, начинающиеся с #, пропускаются. Строки, начинающиеся с import (за которыми следует пробел или табуляция), выполняются.
Например, предположим, что sys.prefix и sys.exec_prefix установлены в /usr/local. Библиотека Python X.Y затем устанавливается в /usr/local/lib/pythonX.Y. Предположим, что у неё есть подкаталог /usr/local/lib/pythonX.Y/site-packages с тремя подподкаталогами, foo, bar и spam, и двумя файлами конфигурации пути, foo.pth и bar.pth. Предположим, что foo.pth содержит следующее:
# foo package configuration foo bar bletch
и bar.pth содержит:
# bar package configuration bar
Тогда следующие каталоги, специфичные для версии, будут добавлены в sys.path, в этом порядке:
/usr/local/lib/pythonX.Y/site-packages/bar /usr/local/lib/pythonX.Y/site-packages/foo
Обратите внимание, что bletch пропущен, потому что он не существует; каталог bar предшествует каталогу foo, потому что bar.pth идёт в алфавитном порядке раньше foo.pth; и spam пропущен, потому что он не указан ни в одном файле конфигурации пути.
После этих манипуляций с путями предпринимается попытка импорта модуля с именем sitecustomize, который может выполнять произвольные пользовательские настройки. Обычно его создаёт системный администратор в каталоге site-packages. Если этот импорт завершается ошибкой ImportError, она игнорируется без сообщений. Если Python запускается без доступных потоков вывода, как в случае с pythonw.exe в Windows (который используется по умолчанию для запуска IDLE), попытки вывода от sitecustomize игнорируются. Любая ошибка, отличная от ImportError, приводит к молчаливому, возможно, загадочному завершению процесса.
После этого предпринимается попытка импорта модуля с именем usercustomize, который может выполнять произвольные пользовательские настройки, если ENABLE_USER_SITE имеет значение true. Этот файл предназначен для создания в пользовательском каталоге site-packages (см. ниже), который является частью sys.path за исключением случаев, когда он отключён параметром -s. Ошибка ImportError будет проигнорирована.
Обратите внимание, что для некоторых систем, отличных от Unix, sys.prefix и sys.exec_prefix пусты, и манипуляции с путями пропускаются; однако попытка импорта sitecustomize и usercustomize всё равно производится.
29.13.1. Настройка Readline
На системах, поддерживающих readline, этот модуль также импортирует и настраивает модуль rlcompleter, если Python запущен в интерактивном режиме и без опции -S. По умолчанию включена автодополнение и используется ~/.python_history в качестве файла сохранения истории. Для отключения удалите (или переопределите) атрибут sys.__interactivehook__ в вашем модуле sitecustomize или usercustomize или в файле PYTHONSTARTUP.
Изменено в версии 3.4: Активация rlcompleter и истории была сделана автоматической.
29.13.2. Содержание модуля
-
site.PREFIXES -
Список префиксов для каталогов site-packages.
-
site.ENABLE_USER_SITE -
Флаг, показывающий состояние каталога user site-packages.
Trueозначает, что он включён и был добавлен вsys.path.Falseозначает, что он был отключён по запросу пользователя (с помощью-sилиPYTHONNOUSERSITE).Noneозначает, что он был отключён по соображениям безопасности (несовпадение идентификаторов пользователя или группы и эффективных идентификаторов) или администратором.
-
site.USER_SITE -
Путь к пользовательскому каталогу site-packages для запускаемого Python. Может быть
Noneеслиgetusersitepackages()ещё не был вызван. Значение по умолчанию —~/.local/lib/pythonX.Y/site-packagesдля UNIX и систем Mac OS X без фреймворка,~/Library/Python/X.Y/lib/python/site-packagesдля систем Mac с фреймворком и%APPDATA%\Python\PythonXY\site-packagesдля Windows. Этот каталог является каталогом сайта, что означает, что файлы.pthв нём будут обработаны.
-
site.USER_BASE -
Путь к базовому каталогу для пользовательского каталога site-packages. Может быть
Noneеслиgetuserbase()ещё не был вызван. Значение по умолчанию —~/.localдля UNIX и систем Mac OS X без фреймворка,~/Library/Python/X.Yдля систем Mac с фреймворком и%APPDATA%\Pythonдля Windows. Это значение используется модулем Distutils для вычисления каталогов установки скриптов, файлов данных, модулей Python и т.д. для схемы пользовательской установки. Смотрите такжеPYTHONUSERBASE.
-
site.main() -
Добавляет все стандартные каталоги, специфичные для сайта, в путь поиска модулей. Эта функция вызывается автоматически при импорте этого модуля, если интерпретатор Python не был запущен с флагом
-S.Изменено в версии 3.3: Эта функция раньше вызывалась безусловно.
-
site.addsitedir(sitedir, known_paths=None) -
Добавляет каталог в sys.path и обрабатывает его файлы
.pth. Обычно используется вsitecustomizeилиusercustomize(см. выше).
-
site.getsitepackages() -
Возвращает список, содержащий все глобальные каталоги site-packages.
Добавлена в версии 3.2.
-
site.getuserbase() -
Возвращает путь к каталогу пользовательской базы,
USER_BASE. Если он ещё не инициализирован, эта функция также задаст его, учитываяPYTHONUSERBASE.Введено в версии 3.2.
-
site.getusersitepackages() -
Возвращает путь к каталогу site-packages, специфичному для пользователя,
USER_SITE. Если он ещё не инициализирован, эта функция также задаст его, учитываяPYTHONNOUSERSITEиUSER_BASE.Введено в версии 3.2.
Модуль site также предоставляет способ получения пользовательских каталогов из командной строки:
$ python3 -m site --user-site /home/user/.local/lib/python3.3/site-packages
Если он вызван без аргументов, он выведет содержимое sys.path в стандартный вывод, после чего значение USER_BASE и информацию о существовании каталога, затем то же самое для USER_SITE и, наконец, значение ENABLE_USER_SITE.
-
--user-base -
Выводит путь к каталогу пользовательской базы.
-
--user-site -
Выводит путь к каталогу user site-packages.
Если оба параметра указаны, будут выведены пользовательская база и пользовательский сайт (всегда в этом порядке), разделенные os.pathsep.
Если указан любой параметр, скрипт завершит работу со значением: 0 если каталог user site-packages включён, 1 если он был отключён пользователем, 2 если он отключён по соображениям безопасности или администратором, и значением больше 2, если возникла ошибка.
См. также
PEP 370 – Каталог site-packages на уровне пользователя
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.6/library/site.html