1. Командная строка и окружающая среда¶
Интерпретатор CPython сканирует командную строку и среду в поисках различных настроек.
Детали реализации CPython: Схемы командной строки в других реализациях могут отличаться. Дополнительные ресурсы приведены в разделе Альтернативные реализации.
1.1. Командная строка¶
При вызове Python вы можете указать любой из этих параметров:
python [-bBdEhiIOqsSuvVWx?] [-c command | -m module-name | script | - ] [args]
Наиболее распространенным вариантом использования является, конечно, простой вызов скрипта:
python myscript.py
1.1.1. Параметры интерфейса¶
Интерфейс интерпретатора напоминает интерфейс оболочки UNIX, но предоставляет некоторые дополнительные методы вызова:
При вызове со стандартного ввода, подключенного к устройству tty, он запрашивает команды и выполняет их до тех пор, пока не будет считан EOF (символ конца файла, который можно ввести с помощью Ctrl-D в UNIX или Ctrl-Z, Enter в Windows).
При вызове с аргументом filename или с файлом в качестве стандартного ввода он считывает и выполняет скрипт из этого файла.
При вызове с аргументом имени каталога он считывает и выполняет сценарий с соответствующим именем из этого каталога.
При вызове с помощью
-c commandон выполняет инструкции Python, указанные как command. Здесь command может содержать несколько инструкций, разделенных символами новой строки. В инструкциях Python важно использовать начальный пробел!При вызове с помощью
-m module-nameданный модуль находится в пути к модулю Python и выполняется как скрипт.
В неинтерактивном режиме весь ввод данных анализируется перед его выполнением.
Опция интерфейса завершает список опций, используемых интерпретатором, все последовательные аргументы будут иметь значение sys.argv – обратите внимание, что первый элемент, индекс ноль (sys.argv[0]), - это строка, отражающая исходный код программы.
- -c <command>¶
Выполните код на Python в command. command может быть одним или несколькими операторами, разделенными символами новой строки, со значительными пробелами в начале, как в обычном коде модуля.
Если задана эта опция, то первым элементом
sys.argvбудет"-c", а текущий каталог будет добавлен в началоsys.path(что позволит импортировать модули из этого каталога как модули верхнего уровня).Создает auditing event
cpython.run_commandс аргументомcommand.
- -m <module-name>¶
Выполните поиск
sys.pathдля именованного модуля и выполните его содержимое как модуль__main__.Поскольку аргументом является имя модуля, вы не должны указывать расширение файла (
.py). Имя модуля должно быть допустимым абсолютным именем модуля Python, но реализация не всегда может обеспечить соблюдение этого требования (например, это может позволить вам использовать имя, содержащее дефис).Также разрешены имена пакетов (включая пакеты из пространства имен). Если вместо обычного модуля указано имя пакета, интерпретатор выполнит
<pkg>.__main__в качестве основного модуля. Такое поведение намеренно аналогично обработке каталогов и zip-файлов, которые передаются интерпретатору в качестве аргумента скрипта.Примечание
Этот параметр нельзя использовать со встроенными модулями и модулями расширения, написанными на C, поскольку они не содержат файлов модулей Python. Однако его все равно можно использовать для предварительно скомпилированных модулей, даже если исходный файл недоступен.
Если задан этот параметр, то первым элементом
sys.argvбудет полный путь к файлу модуля (при поиске файла модуля первому элементу будет присвоено значение"-m"). Как и в случае с параметром-c, текущий каталог будет добавлен в началоsys.path.параметр
-Iможно использовать для запуска скрипта в изолированном режиме, когдаsys.pathне содержит ни текущего каталога, ни каталога пакетов сайта пользователя. ВсеPYTHON*переменные среды также игнорируются.Многие модули стандартной библиотеки содержат код, который вызывается при их выполнении в виде скрипта. Примером может служить модуль
timeit:python -m timeit -s 'setup here' 'benchmarked code here' python -m timeit -h # for details
Создает auditing event
cpython.run_moduleс аргументомmodule-name.См.также
runpy.run_module()Эквивалентная функциональность, доступная непосредственно коду на Python
PEP 338 – Выполнение модулей в виде скриптов
Изменено в версии 3.1: Укажите имя пакета для запуска подмодуля
__main__.Изменено в версии 3.4: также поддерживаются пакеты пространства имен
- -
Считывать команды из стандартного ввода (
sys.stdin). Если стандартный ввод является терминальным, то подразумевается-i.Если задан этот параметр, то первым элементом
sys.argvбудет"-", а текущий каталог будет добавлен в началоsys.path.Выдает auditing event
cpython.run_stdinбез каких-либо аргументов.
- <script>
Выполните код на Python, содержащийся в script, который должен быть путем к файловой системе (абсолютным или относительным), ссылающимся либо на файл на Python, либо на каталог, содержащий файл
__main__.py, либо на zip-файл, содержащий файл__main__.py.Если задан этот параметр, то первым элементом
sys.argvбудет имя скрипта, указанное в командной строке.Если имя скрипта напрямую ссылается на файл Python, каталог, содержащий этот файл, добавляется в начало
sys.path, и файл выполняется как модуль__main__.Если имя скрипта относится к каталогу или zip-файлу, имя скрипта добавляется в начало
sys.path, и файл__main__.pyв этом расположении выполняется как модуль__main__.параметр
-Iможно использовать для запуска скрипта в изолированном режиме, когдаsys.pathне содержит ни каталога скрипта, ни каталога пользовательских пакетов сайта. ВсеPYTHON*переменные среды также игнорируются.Создает auditing event
cpython.run_fileс аргументомfilename.См.также
runpy.run_path()Эквивалентная функциональность, доступная непосредственно коду на Python
Если параметр интерфейса не указан, то подразумевается -i, sys.argv[0] является пустой строкой (""), и текущий каталог будет добавлен в начало sys.path. Кроме того, автоматически включаются функции заполнения вкладок и редактирования истории, если они доступны на вашей платформе (см. Конфигурация строки чтения).
См.также
Изменено в версии 3.4: Автоматическое включение заполнения вкладок и редактирования истории.
1.1.2. Общие параметры¶
- -?¶
- -h¶
- --help¶
Выведите краткое описание всех параметров командной строки и соответствующих переменных окружения и завершите работу.
- --help-env¶
Выведите краткое описание переменных среды, специфичных для Python, и завершите работу.
Добавлено в версии 3.11.
- --help-xoptions¶
Распечатайте описание параметров, зависящих от конкретной реализации
-X, и завершите работу.Добавлено в версии 3.11.
- --help-all¶
Распечатайте полную информацию об использовании и завершите работу.
Добавлено в версии 3.11.
1.1.3. Различные варианты¶
- -b¶
Выдает предупреждение при преобразовании
bytesилиbytearrayвstrбез указания кодировки или сравненияbytesилиbytearrayсstrилиbytesсint. Выдает ошибку, если параметр задан дважды (-bb).
- -B¶
Если это указано, Python не будет пытаться записывать файлы
.pycпри импорте исходных модулей. Смотрите такжеPYTHONDONTWRITEBYTECODE.
- --check-hash-based-pycs default|always|never¶
Контролируйте поведение проверки файлов на основе хэша
.pyc. Смотрите Недействительность кэшированного байт-кода. Если установлено значениеdefault, проверенные и непроверенные файлы кэша байт-кода на основе хэша проверяются в соответствии с их семантикой по умолчанию. Если установлено значениеalways, все файлы на основе хэша.pyc, независимо от того, отмечены они или нет, проверяются на соответствие их соответствующему исходному файлу. Если установлено значениеnever, файлы, основанные на хэше.pyc, не проверяются на соответствие их соответствующим исходным файлам.Этот параметр не влияет на семантику файлов, основанных на временных метках
.pyc.
- -d¶
Включите вывод отладки синтаксического анализатора (только для экспертов, в зависимости от параметров компиляции). Смотрите также
PYTHONDEBUG.
- -E¶
Игнорируйте все
PYTHON*переменные окружения, напримерPYTHONPATHиPYTHONHOME, которые могут быть установлены.
- -i¶
Когда в качестве первого аргумента передается сценарий или используется параметр
-c, после выполнения сценария или команды перейдите в интерактивный режим, даже еслиsys.stdinне отображается как терминал. ФайлPYTHONSTARTUPне прочитан.Это может быть полезно для проверки глобальных переменных или трассировки стека, когда скрипт вызывает исключение. Смотрите также
PYTHONINSPECT.
- -I¶
Запустите Python в изолированном режиме. Это также подразумевает опции
-E,-Pи-s.В изолированном режиме
sys.pathне содержит ни каталога скрипта, ни каталога пакетов сайта пользователя. Все переменные средыPYTHON*также игнорируются. Могут быть введены дополнительные ограничения, чтобы пользователь не мог внедрить вредоносный код.Добавлено в версии 3.4.
- -O¶
Удалите операторы assert и любой код, зависящий от значения
__debug__. Увеличьте имя файла для скомпилированных (bytecode) файлов, добавив.opt-1перед расширением.pyc(см. PEP 488). Смотрите такжеPYTHONOPTIMIZE.Изменено в версии 3.5: Измените
.pycимена файлов в соответствии с PEP 488.
- -OO¶
Выполните
-O, а также удалите строки документации. Увеличьте имя файла для скомпилированных (bytecode) файлов, добавив.opt-2перед расширением.pyc(см. PEP 488).Изменено в версии 3.5: Измените
.pycимена файлов в соответствии с PEP 488.
- -P¶
Не добавляйте потенциально опасный путь перед
sys.path:python -m moduleкомандная строка: Не добавляйте текущий рабочий каталог в начало.python script.pyкомандная строка: не добавляйте каталог скрипта в начало. Если это символьная ссылка, разрешите символьные ссылки.python -c codeиpython(REPL) командные строки: не добавляйте пустую строку, которая означает текущий рабочий каталог.
Смотрите также переменную окружения
PYTHONSAFEPATHи параметры-Eи-I(изолированные).Добавлено в версии 3.11.
- -q¶
Не отображайте сообщения об авторских правах и версии даже в интерактивном режиме.
Добавлено в версии 3.2.
- -R¶
Включите рандомизацию хэша. Эта опция действует только в том случае, если переменной окружения
PYTHONHASHSEEDприсвоено значение0, поскольку рандомизация хэша включена по умолчанию.В предыдущих версиях Python эта опция включала рандомизацию хэша, так что значения
__hash__()объектов str и bytes «засаливались» непредсказуемым случайным значением. Хотя они остаются постоянными в рамках отдельного процесса Python, они непредсказуемы при повторных вызовах Python.Рандомизация хэшей предназначена для обеспечения защиты от отказа в обслуживании, вызванного тщательно подобранными входными данными, которые используют наихудшую производительность конструкции dict, O(n2) сложность. Подробности смотрите в разделе http://ocert.org/advisories/ocert-2011-003.html.
PYTHONHASHSEEDпозволяет вам установить фиксированное значение для начального секрета хэша.Добавлено в версии 3.2.3.
Изменено в версии 3.7: Эта опция больше не игнорируется.
- -s¶
Не добавляйте
user site-packages directoryкsys.path.Смотрите также
PYTHONNOUSERSITE.См.также
PEP 370 – Для каждого сайта пользователя-каталог пакетов
- -S¶
Отключите импорт модуля
siteи связанные с ним зависящие от сайта манипуляции сsys.path. Также отключите эти манипуляции, еслиsiteбудет явно импортирован позже (вызовитеsite.main(), если вы хотите, чтобы они были запущены).
- -u¶
Принудительно отключите буферизацию потоков stdout и stderr. Этот параметр не влияет на поток stdin.
Смотрите также
PYTHONUNBUFFERED.Изменено в версии 3.7: Текстовый слой потоков stdout и stderr теперь не буферизован.
- -v¶
При каждой инициализации модуля выводите сообщение с указанием места (имени файла или встроенного модуля), из которого он был загружен. Если оно указано дважды (
-vv), выводите сообщение для каждого файла, наличие которого проверяется при поиске модуля. Также содержит информацию об очистке модуля при выходе.Изменено в версии 3.10: Модуль
siteсообщает о путях, относящихся к конкретному сайту, и об обрабатываемых файлах.pth.Смотрите также
PYTHONVERBOSE.
- -W arg¶
Управление предупреждениями. Механизм предупреждений Python по умолчанию выводит предупреждающие сообщения с значением
sys.stderr.Простейшие настройки безоговорочно применяют определенное действие ко всем предупреждениям, выданным процессом (даже к тем, которые по умолчанию игнорируются).:
-Wdefault # Warn once per call location -Werror # Convert to exceptions -Walways # Warn every time -Wmodule # Warn once per calling module -Wonce # Warn once per Python process -Wignore # Never warn
Названия действий могут быть сокращены по желанию, и интерпретатор преобразует их в соответствующее название действия. Например,
-Wiсовпадает с-Wignore.Полная форма аргумента такова:
action:message:category:module:lineno
Пустые поля соответствуют всем значениям; завершающие пустые поля могут быть опущены. Например,
-W ignore::DeprecationWarningигнорирует все предупреждения об устаревании.Поле действие соответствует описанному выше, но применяется только к предупреждениям, которые соответствуют остальным полям.
Поле message должно соответствовать всему предупреждающему сообщению; это соответствие не зависит от регистра.
Поле категория соответствует категории предупреждения (например,:
DeprecationWarning). Это должно быть имя класса; соответствие проверяет, является ли фактическая категория предупреждения в сообщении подклассом указанной категории предупреждения.Поле module соответствует (полному) названию модуля; это соответствие чувствительно к регистру.
Поле lineno соответствует номеру строки, где ноль соответствует номерам всех строк и, таким образом, эквивалентен пропущенному номеру строки.
Может быть задано несколько вариантов
-W; если предупреждение соответствует более чем одному варианту, выполняется действие для последнего соответствующего варианта. Недопустимые параметры-Wигнорируются (хотя при первом предупреждении выводится предупреждающее сообщение о недопустимых параметрах).Предупреждениями также можно управлять с помощью переменной окружения
PYTHONWARNINGSи из программы на Python с помощью модуляwarnings. Например, функцияwarnings.filterwarnings()может использоваться для использования регулярного выражения в предупреждающем сообщении.Смотрите Фильтр предупреждений и Описание фильтров предупреждений для получения более подробной информации.
- -x¶
Пропустите первую строку исходного кода, разрешив использовать не Unix-формы
#!cmd. Это предназначено только для взлома, специфичного для DOS.
- -X¶
Зарезервировано для различных вариантов, зависящих от конкретной реализации. В настоящее время CPython определяет следующие возможные значения:
-X faulthandler, чтобы включитьfaulthandler. Смотрите такжеPYTHONFAULTHANDLER.-X showrefcountдля вывода общего количества ссылок и количества используемых блоков памяти при завершении программы или после каждой инструкции в интерактивном интерпретаторе. Это работает только на debug builds.-X tracemallocчтобы начать отслеживание распределения памяти в Python, используйте модульtracemalloc. По умолчанию в режиме обратной трассировки сохраняется только самый последний кадр. Используйте-X tracemalloc=NFRAME, чтобы начать трассировку с ограничением обратной трассировки в N КАДРОВ frames. Смотритеtracemalloc.start()иPYTHONTRACEMALLOCдля получения дополнительной информации.-X int_max_str_digitsнастраивает integer string conversion length limitation. Смотрите такжеPYTHONINTMAXSTRDIGITS.-X importtime, чтобы показать, сколько времени занимает каждый импорт. В нем отображается название модуля, суммарное время (включая вложенный импорт) и время автономной работы (исключая вложенный импорт). Обратите внимание, что в многопоточном приложении его вывод может быть нарушен. Обычно используетсяpython3 -X importtime -c 'import asyncio'. Смотрите такжеPYTHONPROFILEIMPORTTIME.-X dev: включить Python Development Mode, вводя дополнительные проверки во время выполнения, которые слишком дороги, чтобы включать их по умолчанию. Смотрите такжеPYTHONDEVMODE.-X utf8включает функцию Python UTF-8 Mode.-X utf8=0явно отключает функцию Python UTF-8 Mode (даже если в противном случае она активировалась бы автоматически). Смотрите такжеPYTHONUTF8.-X pycache_prefix=PATHпозволяет записывать.pycфайлы в параллельное дерево с корнем в данном каталоге, а не в дерево кода. Смотрите такжеPYTHONPYCACHEPREFIX.-X warn_default_encodingвыдаетEncodingWarning, когда для открытия файлов используется кодировка по умолчанию, зависящая от языкового стандарта. Смотрите такжеPYTHONWARNDEFAULTENCODING.-X no_debug_rangesотключает включение таблиц, отображающих дополнительную информацию о местоположении (конечная строка, смещение начального столбца и смещение конечного столбца) для каждой команды в code objects. Это полезно, когда требуются объекты кода меньшего размера и pyc-файлы, а также для подавления дополнительных визуальных индикаторов местоположения, когда интерпретатор отображает трассировку. Смотрите такжеPYTHONNODEBUGRANGES.-X frozen_modulesопределяет, игнорируются ли замороженные модули механизмом импорта. Значение «on» означает, что они импортируются, а «off» означает, что они игнорируются. Значение по умолчанию «on», если это установленный Python (обычный случай). Если он находится в стадии разработки (запускается из дерева исходных текстов), то значение по умолчанию равно «выкл.». Обратите внимание, что замороженные модули «importlib_bootstrap» и «importlib_bootstrap_external» используются всегда, даже если для этого флага установлено значение «выкл.».
Это также позволяет передавать произвольные значения и извлекать их через словарь
sys._xoptions.Добавлено в версии 3.2.
Изменено в версии 3.3: Добавлена опция
-X faulthandler.Изменено в версии 3.4: Добавлены опции
-X showrefcountи-X tracemalloc.Изменено в версии 3.6: Добавлена опция
-X showalloccount.Изменено в версии 3.7: Добавлены опции
-X importtime,-X devи-X utf8.Изменено в версии 3.8: Добавлена опция
-X pycache_prefix. Опция-X devтеперь регистрируетclose()исключения вio.IOBaseдеструкторе.Изменено в версии 3.9: Используя опцию
-X dev, проверьте аргументы encoding и errors в операциях кодирования и декодирования строк.Параметр
-X showalloccountбыл удален.Изменено в версии 3.10: Добавлена опция
-X warn_default_encoding. Удалена опция-X oldparser.Изменено в версии 3.11: Добавлены опции
-X no_debug_ranges,-X frozen_modulesи-X int_max_str_digits.
1.1.4. Параметры, которые вы не должны использовать¶
1.2. Переменные среды¶
Эти переменные среды влияют на поведение Python, они обрабатываются перед параметрами командной строки, отличными от -E или -I. Обычно параметры командной строки переопределяют переменные среды, когда возникает конфликт.
- PYTHONHOME¶
Измените расположение стандартных библиотек Python. По умолчанию поиск библиотек выполняется в
prefix/lib/pythonversionиexec_prefix/lib/pythonversion, гдеprefixиexec_prefixявляются каталогами, зависящими от установки, и по умолчанию оба каталога имеют значение/usr/local.Если для
PYTHONHOMEзадано значение для одного каталога, его значение заменяет какprefix, так иexec_prefix. Чтобы задать для них разные значения, установите дляPYTHONHOMEзначениеprefix:exec_prefix.
- PYTHONPATH¶
Измените путь поиска файлов модуля по умолчанию. Формат такой же, как и в командной строке
PATH: один или несколько путей к каталогам, разделенныхos.pathsep(например, двоеточия в Unix или точки с запятой в Windows). Несуществующие каталоги автоматически игнорируются.В дополнение к обычным каталогам, отдельные записи
PYTHONPATHмогут ссылаться на zip-файлы, содержащие чистые модули Python (как в исходном, так и в скомпилированном виде). Модули расширения не могут быть импортированы из zip-файлов.Путь поиска по умолчанию зависит от установки, но обычно начинается с
prefix/lib/pythonversion(см.PYTHONHOMEвыше). Он всегда добавляется кPYTHONPATH.В поле поиска перед
PYTHONPATHбудет добавлен дополнительный каталог, как описано выше в разделе Параметры интерфейса. Путем поиска можно управлять из программы на Python с помощью переменнойsys.path.
- PYTHONSAFEPATH¶
Если для этого параметра задано значение непустой строки, не добавляйте потенциально небезопасный путь перед
sys.path: подробности смотрите в параметре-P.Добавлено в версии 3.11.
- PYTHONPLATLIBDIR¶
Если для этого параметра задано значение непустой строки, то оно переопределяет значение
sys.platlibdir.Добавлено в версии 3.9.
- PYTHONSTARTUP¶
Если это имя файла, доступного для чтения, команды Python в этом файле выполняются до того, как в интерактивном режиме отобразится первое приглашение. Файл выполняется в том же пространстве имен, где выполняются интерактивные команды, так что объекты, определенные или импортированные в нем, могут быть использованы без оговорок в интерактивном сеансе. Вы также можете изменить подсказки
sys.ps1иsys.ps2, а также подсказкуsys.__interactivehook__в этом файле.Создает auditing event
cpython.run_startupс аргументомfilename.
- PYTHONOPTIMIZE¶
Если задано значение непустой строки, это эквивалентно указанию параметра
-O. Если задано значение целого числа, это эквивалентно многократному указанию-O.
- PYTHONBREAKPOINT¶
Если это значение задано, вызываемый объект именуется с использованием обозначения с точечным контуром. Модуль, содержащий вызываемый объект, будет импортирован, а затем вызываемый объект будет запущен с помощью реализации по умолчанию
sys.breakpointhook(), которая сама вызывается встроеннымbreakpoint(). Если значение не задано или равно пустой строке, оно эквивалентно значению «pdb.set_trace». Установка этого значения в строку «0» приводит к тому, что реализацияsys.breakpointhook()по умолчанию не выполняет ничего, кроме немедленного возврата.Добавлено в версии 3.7.
- PYTHONDEBUG¶
Если задано значение непустой строки, это эквивалентно указанию параметра
-d. Если задано значение целого числа, это эквивалентно многократному указанию-d.
- PYTHONINSPECT¶
Если для этого параметра задано значение непустой строки, это эквивалентно указанию параметра
-i.Эта переменная также может быть изменена с помощью кода на Python, используя
os.environ, чтобы принудительно включить режим проверки при завершении программы.Выдает auditing event
cpython.run_stdinбез каких-либо аргументов.Изменено в версии 3.11.10: (также 3.10.15, 3.9.20 и 3.8.20) Генерирует события аудита.
- PYTHONUNBUFFERED¶
Если для этого параметра задано значение непустой строки, это эквивалентно указанию параметра
-u.
- PYTHONVERBOSE¶
Если задано значение непустой строки, это эквивалентно указанию параметра
-v. Если задано значение целого числа, это эквивалентно многократному указанию-v.
- PYTHONCASEOK¶
Если это значение задано, Python игнорирует регистр в операторах
import. Это работает только в Windows и Mac OS.
- PYTHONDONTWRITEBYTECODE¶
Если для этого параметра задано значение непустой строки, Python не будет пытаться записывать файлы
.pycпри импорте исходных модулей. Это эквивалентно указанию параметра-B.
- PYTHONPYCACHEPREFIX¶
Если это значение задано, Python будет записывать файлы
.pycв зеркальное дерево каталогов по этому пути, а не в каталоги__pycache__в исходном дереве. Это эквивалентно указанию параметра-Xpycache_prefix=PATH.Добавлено в версии 3.8.
- PYTHONHASHSEED¶
Если эта переменная не задана или имеет значение
random, для заполнения хэшей объектов str и bytes используется случайное значение.Если для
PYTHONHASHSEEDзадано целочисленное значение, оно используется в качестве фиксированного начального значения для генерации хэша() типов, охватываемых рандомизацией хэша.Его цель - обеспечить повторяемое хэширование, например, для самотестирования самого интерпретатора, или разрешить кластеру процессов python совместно использовать значения хэша.
Целое число должно быть десятичным числом в диапазоне [0,4294967295]. Указание значения 0 отключит рандомизацию хэша.
Добавлено в версии 3.2.3.
- PYTHONINTMAXSTRDIGITS¶
Если для этой переменной задано целое число, она используется для настройки глобального integer string conversion length limitation интерпретатора.
Добавлено в версии 3.11.
- PYTHONIOENCODING¶
Если это значение задано перед запуском интерпретатора, оно переопределяет кодировку, используемую для stdin/stdout/stderr, в синтаксисе
encodingname:errorhandler. Какencodingname, так и:errorhandlerчасти являются необязательными и имеют то же значение, что и вstr.encode().Для stderr часть
:errorhandlerигнорируется; обработчиком всегда будет'backslashreplace'.Изменено в версии 3.4: Часть
encodingnameтеперь необязательна.Изменено в версии 3.6: В Windows кодировка, указанная этой переменной, игнорируется для буферов интерактивной консоли, если только также не указано значение
PYTHONLEGACYWINDOWSSTDIO. Файлы и каналы, перенаправленные через стандартные потоки, не затрагиваются.
- PYTHONNOUSERSITE¶
Если это значение задано, Python не будет добавлять
user site-packages directoryкsys.path.См.также
PEP 370 – Для каждого сайта пользователя-каталог пакетов
- PYTHONUSERBASE¶
Определяет
user base directory, который используется для вычисления пути кuser site-packages directoryи installation paths дляpython -m pip install --user.См.также
PEP 370 – Для каждого сайта пользователя-каталог пакетов
- PYTHONEXECUTABLE¶
Если задана эта переменная среды, то вместо значения, полученного во время выполнения C, будет присвоено значение
sys.argv[0]. Работает только в Mac OS.
- PYTHONWARNINGS¶
Это эквивалентно параметру
-W. Если задать значение строки, разделенной запятыми, это эквивалентно многократному указанию-W, при этом фильтры, расположенные позже в списке, будут иметь приоритет над фильтрами, расположенными ранее в списке.Простейшие настройки безоговорочно применяют определенное действие ко всем предупреждениям, выданным процессом (даже к тем, которые по умолчанию игнорируются).:
PYTHONWARNINGS=default # Warn once per call location PYTHONWARNINGS=error # Convert to exceptions PYTHONWARNINGS=always # Warn every time PYTHONWARNINGS=module # Warn once per calling module PYTHONWARNINGS=once # Warn once per Python process PYTHONWARNINGS=ignore # Never warn
Смотрите Фильтр предупреждений и Описание фильтров предупреждений для получения более подробной информации.
- PYTHONFAULTHANDLER¶
Если для этой переменной окружения задано значение непустой строки, то при запуске вызывается
faulthandler.enable(): установите обработчик для сигналовSIGSEGV,SIGFPE,SIGABRT,SIGBUSиSIGILLдля вывода обратной трассировки Python. Это эквивалентно варианту-Xfaulthandler.Добавлено в версии 3.3.
- PYTHONTRACEMALLOC¶
Если для этой переменной среды задано значение непустой строки, запустите отслеживание распределения памяти в Python с помощью модуля
tracemalloc. Значение переменной - это максимальное количество кадров, сохраненных в процессе обратной трассировки. Например,PYTHONTRACEMALLOC=1сохраняет только самый последний кадр. Дополнительную информацию смотрите в функцииtracemalloc.start(). Это эквивалентно установке параметра-Xtracemalloc.Добавлено в версии 3.4.
- PYTHONPROFILEIMPORTTIME¶
Если для этой переменной среды задана непустая строка, Python покажет, сколько времени занимает каждый импорт. Это эквивалентно установке параметра
-Ximporttime.Добавлено в версии 3.7.
- PYTHONASYNCIODEBUG¶
Если для этой переменной среды задано значение непустой строки, включите параметр debug mode модуля
asyncio.Добавлено в версии 3.4.
- PYTHONMALLOC¶
Установите распределители памяти Python и/или установите отладочные перехватчики.
Установите семейство распределителей памяти, используемых Python:
default: используйте default memory allocators.malloc: используйте функциюmalloc()библиотеки C для всех доменов (PYMEM_DOMAIN_RAW,PYMEM_DOMAIN_MEM,PYMEM_DOMAIN_OBJ).pymalloc: используйте pymalloc allocator для доменовPYMEM_DOMAIN_MEMиPYMEM_DOMAIN_OBJи используйте функциюmalloc()дляPYMEM_DOMAIN_RAWдомен.
Установить debug hooks:
debug: установите отладочные перехватчики поверх default memory allocators.malloc_debug: то же, что иmalloc, но также установите отладочные перехватчики.pymalloc_debug: то же, что иpymalloc, но также установите отладочные перехватчики.
Добавлено в версии 3.6.
Изменено в версии 3.7: Добавлен распределитель
"default".
- PYTHONMALLOCSTATS¶
Если задано значение непустой строки, Python будет печатать статистику pymalloc memory allocator каждый раз, когда создается новый объект pymalloc arena, и при завершении работы.
Эта переменная игнорируется, если переменная окружения
PYTHONMALLOCиспользуется для принудительного выделенияmalloc()библиотеки C или если Python настроен без поддержкиpymalloc.Изменено в версии 3.6: Эта переменная теперь также может использоваться в Python, скомпилированном в режиме выпуска. Теперь она не имеет эффекта, если задана как пустая строка.
- PYTHONLEGACYWINDOWSFSENCODING¶
Если задана непустая строка, то режим по умолчанию filesystem encoding and error handler вернется к значениям, существовавшим до 3.6, - «mbc» и «replace» соответственно. В противном случае используются новые значения по умолчанию «utf-8» и «surrogatepass».
Это также может быть включено во время выполнения с помощью
sys._enablelegacywindowsfsencoding().Availability: Окна.
Добавлено в версии 3.6: Смотрите PEP 529 для получения более подробной информации.
- PYTHONLEGACYWINDOWSSTDIO¶
Если задана непустая строка, то не используются новые консольные средства чтения и записи. Это означает, что символы Unicode будут закодированы в соответствии с активной кодовой страницей консоли, а не с использованием utf-8.
Эта переменная игнорируется, если стандартные потоки перенаправляются (в файлы или каналы), а не ссылаются на буферы консоли.
Availability: Окна.
Добавлено в версии 3.6.
- PYTHONCOERCECLOCALE¶
Если установлено значение
0, это приводит к тому, что основное приложение командной строки Python пропускает принудительное использование устаревших языковых стандартов C и POSIX на основе ASCII и заменяет их более подходящей альтернативой на основе UTF-8.Если эта переменная не задана (или ей присвоено значение, отличное от
0), переменная среды переопределения языкового стандартаLC_ALLтакже не задана, и текущим языковым стандартом, указанным для категорииLC_CTYPE, является либо языковой стандарт по умолчаниюCили же явно основанный на ASCII языковой стандартPOSIX, тогда командная строка Python попытается настроить следующие языковые стандарты для категорииLC_CTYPEв указанном порядке перед загрузкой среды выполнения интерпретатора:C.UTF-8C.utf8UTF-8
Если установка одной из этих категорий языковых стандартов завершится успешно, то переменная среды
LC_CTYPEтакже будет установлена соответствующим образом в текущей среде процесса перед инициализацией среды выполнения Python. Это гарантирует, что обновленная настройка не только будет видна как самому интерпретатору, так и другим компонентам, поддерживающим языковой стандарт, работающим в одном и том же процессе (например, библиотеке GNUreadline), но и будет видна в подпроцессах (независимо от того, запущен ли в этих процессах интерпретатор Python или нет), а также в операциях, которые запрашивают среду, а не текущую локаль C (например, собственнуюlocale.getdefaultlocale()в Python).Настройка одного из этих языковых стандартов (либо явно, либо с помощью приведенного выше неявного приведения к языковому стандарту) автоматически включает
surrogateescapeerror handler дляsys.stdinиsys.stdout(sys.stderrпродолжает использоватьbackslashreplace, как и в любом другом языковом стандарте). Это поведение при обработке потока можно переопределить, используяPYTHONIOENCODINGкак обычно.В целях отладки установка
PYTHONCOERCECLOCALE=warnприведет к тому, что Python будет выдавать предупреждающие сообщения наstderr, если либо активируется приведение к языковому стандарту, либо если языковой стандарт, который вызвал бы приведение, все еще активен при инициализации среды выполнения Python.Также обратите внимание, что даже если приведение к языковому стандарту отключено или если не удается найти подходящий целевой языковой стандарт,
PYTHONUTF8все равно активируется по умолчанию в устаревших языковых стандартах, основанных на ASCII. Обе функции должны быть отключены, чтобы заставить интерпретатор использоватьASCIIвместоUTF-8для системных интерфейсов.Availability: Unix.
Добавлено в версии 3.7: Смотрите PEP 538 для получения более подробной информации.
- PYTHONDEVMODE¶
Если для этой переменной среды задано значение непустой строки, включите Python Development Mode, что приведет к дополнительным проверкам во время выполнения, которые слишком дороги, чтобы включать их по умолчанию. Это эквивалентно установке параметра
-Xdev.Добавлено в версии 3.7.
- PYTHONUTF8¶
Если установлено значение
1, включите параметр Python UTF-8 Mode.Если установлено значение
0, отключите параметр Python UTF-8 Mode.Установка любой другой непустой строки приводит к ошибке при инициализации интерпретатора.
Добавлено в версии 3.7.
- PYTHONWARNDEFAULTENCODING¶
Если для этой переменной среды задано значение непустой строки, то при использовании кодировки по умолчанию, зависящей от языкового стандарта, выдается значение
EncodingWarning.Более подробную информацию смотрите в разделе Предупреждение о включенном кодировании.
Добавлено в версии 3.10.
- PYTHONNODEBUGRANGES¶
Если эта переменная установлена, она отключает включение таблиц, отображающих дополнительную информацию о местоположении (конечная строка, смещение начального столбца и смещение конечного столбца), в каждую инструкцию в code objects. Это полезно, когда требуются объекты кода меньшего размера и pyc-файлы, а также для подавления дополнительных визуальных индикаторов местоположения, когда интерпретатор отображает обратные трассировки.
Добавлено в версии 3.11.
1.2.1. Переменные режима отладки¶
- PYTHONTHREADDEBUG¶
Если этот параметр установлен, Python выведет информацию об отладке потоков в стандартный вывод.
Нужен debug build of Python.
Утратил актуальность с версии 3.10, будет удален в версии 3.12.
- PYTHONDUMPREFS¶
Если этот параметр установлен, Python будет сбрасывать объекты и количество ссылок, которые все еще остаются в силе после завершения работы интерпретатора.
Нужен Python, настроенный с параметром
--with-trace-refsbuild.
- PYTHONDUMPREFSFILE=FILENAME¶
Если этот параметр установлен, Python будет сбрасывать объекты и количество ссылок, которые все еще остаются активными после завершения работы интерпретатора, в файл с именем FILENAME.
Нужен Python, настроенный с параметром
--with-trace-refsbuild.Добавлено в версии 3.11.