Содержание страницы
29.13. site – Перехватчик конфигурации для конкретного сайта¶site – Site-specific configuration hook
Исходный код: Lib/site.py
Этот модуль автоматически импортируется при инициализации. Автоматический импорт можно подавить с помощью флага интерпретатора -S.
Если не использовался флаг -S, импорт этого модуля добавляет специфичные для сайта пути в список поиска модулей и несколько встроенных объектов. В противном случае модуль можно безопасно импортировать без автоматических изменений пути поиска модулей или дополнений встроенных объектов. Чтобы явно запустить обычные добавления для сайта, вызовите функцию site.main().
Изменено в версии 3.3: Раньше импорт модуля вызывал манипуляции с путями даже при использовании -S.
Сначала создаются до четырёх каталогов из головной и хвостовой частей. В качестве головной части используются sys.prefix и sys.exec_prefix; пустые головные части пропускаются. В качестве хвостовой части используется пустая строка, затем lib/site-packages (в Windows) или lib/pythonX.Y/site-packages, а затем lib/site-python (в Unix и Macintosh). Для каждой уникальной комбинации головной и хвостовой частей проверяется, указывает ли она на существующий каталог; если да, он добавляется в sys.path, и также проверяется добавленный путь на наличие файлов конфигурации.
Устарело с версии 3.4: Поддержка каталога «site-python» будет удалена в версии 3.5.
Если на один каталог выше sys.executable существует файл с именем «pyvenv.cfg», то sys.prefix и sys.exec_prefix устанавливаются в этот каталог, и он также проверяется на наличие site-packages и site-python (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 истинно. Этот файл предназначен для создания в каталоге пользовательских site-packages (см. ниже), который является частью sys.path, если не отключён флагом -s. Исключение ImportError будет молча проигнорировано.
Обратите внимание, что для некоторых систем, не основанных на Unix, sys.prefix и sys.exec_prefix пусты, и манипуляции с путём пропускаются; однако попытка импорта sitecustomize и usercustomize всё равно предпринимается.
29.13.1. Конфигурация Readline¶Readline configuration
В системах, поддерживающих readline, этот модуль также импортирует и настраивает модуль rlcompleter, если Python запущен в интерактивном режиме и без флага -S. Поведение по умолчанию включает автодополнение по табуляции и использует файл ~/.python_history для сохранения истории. Чтобы отключить это, удалите (или переопределите) атрибут sys.__interactivehook__ в вашем модуле sitecustomize или usercustomize, или в файле PYTHONSTARTUP.
Изменено в версии 3.4: Активация rlcompleter и истории стала автоматической.
29.13.2. Содержимое модуля¶Module contents
- site.PREFIXES¶
Список префиксов для каталогов site-packages.
- site.ENABLE_USER_SITE¶
Флаг, показывающий статус пользовательского каталога 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. Этот каталог является site-каталогом, то есть файлы .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 (и, возможно, site-python).
Новое в версии 3.2.
- site.getuserbase()¶
Возвращает путь к базовому каталогу пользователя USER_BASE. Если он ещё не инициализирован, эта функция также установит его, учитывая PYTHONUSERBASE.
Новое в версии 3.2.
- site.getusersitepackages()¶
Return the path of the user-specific site-packages directory, USER_SITE. If it is not initialized yet, this function will also set it, respecting PYTHONNOUSERSITE and USER_BASE.
Новое в версии 3.2.
The site module also provides a way to get the user directories from the command line:
$ python3 -m site --user-site
/home/user/.local/lib/python3.3/site-packages
If it is called without arguments, it will print the contents of sys.path on the standard output, followed by the value of USER_BASE and whether the directory exists, then the same thing for USER_SITE, and finally the value of ENABLE_USER_SITE.
- --user-base¶
Выводит путь к базовому каталогу пользователя.
- --user-site¶
Выводит путь к каталогу site-packages пользователя.
If both options are given, user base and user site will be printed (always in this order), separated by os.pathsep.
If any option is given, the script will exit with one of these values: O if the user site-packages directory is enabled, 1 if it was disabled by the user, 2 if it is disabled for security reasons or by an administrator, and a value greater than 2 if there is an error.
См. также
PEP 370 – Каталог site-packages для каждого пользователя