Командная строка и окружение
Интерпретатор 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).
- При вызове с именем файла в качестве аргумента или с файлом как стандартным вводом, он читает и выполняет скрипт из этого файла.
- При вызове с именем каталога в качестве аргумента, он читает и выполняет соответствующим образом названный скрипт из этого каталога.
- При вызове с
-c command, он выполняет Python-выражение(я), указанное как команда. Здесь команда может содержать несколько выражений, разделенных символами новой строки. В Python-выражениях начальные пробелы имеют значение! - При вызове с
-m module-name, указанный модуль находится в пути модулей Python и выполняется как скрипт.
В неинтерактивном режиме весь ввод анализируется перед выполнением.
Параметр интерфейса завершает список параметров, потребляемых интерпретатором, все последующие аргументы окажутся в sys.argv – обратите внимание, что первый элемент с индексом ноль (sys.argv[0]) представляет собой строку, отражающую исходный код программы.
-
-c <command> -
Выполнить Python-код в команде. Команда может состоять из одного или нескольких выражений, разделенных символами новой строки, с учетом начальных пробелов, как и в обычном коде модуля.
Если этот параметр задан, первый элемент
sys.argvбудет"-c", а текущий каталог будет добавлен в началоsys.path(что позволяет импортировать модули из этого каталога как верхнеуровневые модули).Вызывает событие аудита
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не содержит ни текущего каталога, ни каталога site-packages пользователя. Все переменные окруженияPYTHON*также игнорируются.Многие модули стандартной библиотеки содержат код, который вызывается при их выполнении как скрипт. Примером является модуль
timeit:python -m timeit -s 'setup here' 'benchmarked code here' python -m timeit -h # for details
Вызывает событие аудита
cpython.run_moduleс аргументомmodule-name.См. также
-
runpy.run_module() -
Эквивалентная функциональность, непосредственно доступная коду Python
PEP 338 — Выполнение модулей как скриптов
Изменено в версии 3.1: Передайте имя пакета для запуска подмодуля
__main__.Изменено в версии 3.4: поддерживаются пакеты с пространством имён
-
-
- -
Считывать команды из стандартного ввода (
sys.stdin). Если стандартный ввод — терминал, подразумевается-i.Если этот параметр задан, первый элемент
sys.argvбудет"-", а текущий каталог будет добавлен в началоsys.path.Вызывает событие аудита
cpython.run_stdinбез аргументов.
-
<script> -
Выполнить Python-код, содержащийся в скрипте, который должен быть путем к файлу в файловой системе (абсолютным или относительным), указывающим на файл Python, каталог, содержащий файл
__main__.py, или zip-архив, содержащий файл__main__.py.Если этот параметр задан, первый элемент
sys.argvбудет именем скрипта, заданным в командной строке.Если имя скрипта указывает напрямую на Python-файл, каталог, содержащий этот файл, добавляется в начало
sys.path, и файл выполняется как модуль__main__.Если имя скрипта указывает на каталог или zip-архив, имя скрипта добавляется в начало
sys.path, и файл__main__.pyв этом месте выполняется как модуль__main__.-Iпараметр может быть использован для запуска скрипта в изолированном режиме, гдеsys.pathне содержит ни каталога скрипта, ни каталога site-packages пользователя. Все переменные окруженияPYTHON*также игнорируются.Вызывает событие аудита
cpython.run_fileс аргументомfilename.См. также
-
runpy.run_path() -
Эквивалентная функциональность, непосредственно доступная коду Python
-
Если параметр интерфейса не задан, подразумевается -i, sys.argv[0] является пустой строкой ("") и текущий каталог будет добавлен в начало sys.path. Также, завершение ввода с помощью табуляции и редактирование истории автоматически включены, если доступны на вашей платформе (см. Настройка Readline).
См. также
Изменено в версии 3.4: Автоматическое включение завершения ввода с помощью табуляции и редактирования истории.
1.1.2. Общие параметры
-
-? -
-h -
--help -
Вывести краткое описание всех параметров командной строки.
-
-V -
--version -
Вывести номер версии Python и завершить работу. Пример вывода:
Python 3.8.0b2+
При использовании дважды выводится более подробная информация о сборке, например:
Python 3.8.0b2+ (3.8:0c076caaa8, Apr 20 2019, 21:55:00) [GCC 6.2.0 20161005]
Добавлено в версии 3.6: Параметр
-VV.
1.1.3. Дополнительные параметры
-
-b -
Выводит предупреждение при сравнении
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 и -s. В изолированном режиме
sys.pathне содержит ни директорию скрипта, ни директорию site-packages пользователя. Все переменные средыPYTHON*также игнорируются. Могут быть наложены дополнительные ограничения, чтобы предотвратить введение вредоносного кода.Новое в версии 3.4.
-
-O -
Удаляет операторы assert и любой код, условный на значение
__debug__. Дополняет имя файла для скомпилированных (байткодов) файлов, добавив.opt-1перед расширением.pyc(см. PEP 488). См. такжеPYTHONOPTIMIZE.Изменено в версии 3.5: Изменяет имена файлов
.pycв соответствии с PEP 488.
-
-OO -
Выполняет
-Oи также отбрасывает строковые документации. Дополняет имя файла для скомпилированных (байткодов) файлов, добавив.opt-2перед расширением.pyc(см. PEP 488).Изменено в версии 3.5: Изменяет имена файлов
.pycв соответствии с PEP 488.
-
-q -
Не отображать сообщения об авторских правах и версии, даже в интерактивном режиме.
Новое в версии 3.2.
-
-R -
Включает случайную генерацию хэшей. Этот параметр действует только если переменная среды
PYTHONHASHSEEDустановлена в0, поскольку случайная генерация хэшей включена по умолчанию.В предыдущих версиях Python этот параметр включал случайную генерацию хэшей, чтобы значения хэшей объектов str и bytes дополнялись случайным значением, не поддающимся предсказанию. Хотя они остаются постоянными в рамках одного процесса Python, они непредсказуемы при повторных вызовах Python.
Случайная генерация хэшей предназначена для защиты от отказа в обслуживании, вызванного тщательно выбранными входными данными, которые эксплуатируют худшее время работы конструкции dict, сложность O(n2). Подробности см. в http://www.ocert.org/advisories/ocert-2011-003.html.
PYTHONHASHSEEDпозволяет установить фиксированное значение для секрета генерации хэшей.Изменено в версии 3.7: Параметр больше не игнорируется.
Новое в версии 3.2.3.
-
-s -
Не добавлять
user site-packages directoryвsys.path.См. также
PEP 370 – Директория site-packages пользователя
-
-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игнорирует все предупреждения DeprecationWarning.Поле действие, как описано выше, применяется только к предупреждениям, которые соответствуют оставшимся полям.
Поле сообщение должно соответствовать всему сообщению о предупреждении; это соответствие не учитывает регистр.
Поле категория соответствует категории предупреждения (например,
DeprecationWarning). Это должно быть имя класса; проверка соответствия заключается в том, является ли фактическая категория предупреждения сообщения подклассом указанной категории предупреждения.Поле модуль соответствует (полному квалифицированному) имени модуля; это соответствие учитывает регистр.
Поле номер_строки соответствует номеру строки, где ноль соответствует всем номерам строк и, таким образом, эквивалентно пропущенному номеру строки.
Можно указать несколько опций
-W; если предупреждение соответствует нескольким опциям, выполняется действие последней соответствующей опции. Неверные опции-Wигнорируются (хотя о неверных опциях выводится сообщение о предупреждении при первом выводе предупреждения).Управление предупреждениями также возможно с помощью переменной окружения
PYTHONWARNINGSи внутри программы Python с использованием модуляwarnings. Например, функцияwarnings.filterwarnings()может использоваться для применения регулярного выражения к сообщению о предупреждении.Для получения более подробной информации см. Фильтр предупреждений и Описание фильтров предупреждений.
-
-x -
Пропускается первая строка исходного кода, что позволяет использовать не-Unix-форматы
#!cmd. Это предназначено только для специфической ошибки DOS.
-
-X -
Зарезервировано для различных опций, специфичных для реализации. В настоящее время CPython определяет следующие возможные значения:
-
-X faulthandlerдля активацииfaulthandler; -
-X showrefcountдля вывода общего счётчика ссылок и количества используемых блоков памяти при завершении программы или после каждой инструкции в интерактивном интерпретаторе. Это работает только в отладочных сборках. -
-X tracemallocдля начала отслеживания выделения памяти Python с использованием модуляtracemalloc. По умолчанию в трассировке отладки хранится только последний кадр. Используйте-X tracemalloc=NFRAMEдля начала отслеживания с ограничением трассировки в NFRAME кадрах. Для получения дополнительной информации см.tracemalloc.start(). -
-X int_max_str_digitsнастраивает ограничение длины преобразования целых чисел в строки. Также см.PYTHONINTMAXSTRDIGITS. -
-X importtimeдля отображения времени выполнения каждого импорта. Отображаются имя модуля, общее время (включая вложенные импорты) и собственное время (исключая вложенные импорты). Обратите внимание, что его вывод может быть некорректным в многопоточной программе. Типичное использованиеpython3 -X importtime -c 'import asyncio'. Также см.PYTHONPROFILEIMPORTTIME. -
-X dev: включить режим разработки Python, вводя дополнительные проверки во время выполнения, которые слишком дороги для включения по умолчанию. -
-X utf8включает режим Python UTF-8.-X utf8=0явно отключает режим Python UTF-8 (даже если он бы иначе активировался автоматически). -
-X pycache_prefix=PATHразрешает запись файлов.pycв параллельную структуру, укоренённую в указанном каталоге, вместо кодовой структуры. Также см.PYTHONPYCACHEPREFIX. -
-X warn_default_encodingвыводитEncodingWarningпри использовании локализованного кодирования по умолчанию для открытия файлов. Также см.PYTHONWARNDEFAULTENCODING.
Также позволяет передавать произвольные значения и получать их через словарь
sys._xoptions.Изменено в версии 3.2: Добавлена опция
-X.Добавлена в версии 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.Добавлена в версии 3.10.7: Опция
-X int_max_str_digits.Устарело начиная с версии 3.9, удалено в версии 3.10: Опция
-X oldparser. -
1.1.4. Опции, которые не следует использовать
-
-J -
Зарезервировано для использования Jython.
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.
-
PYTHONPLATLIBDIR -
Если это установлено в непустую строку, оно переопределяет значение
sys.platlibdir.Введено в версии 3.9.
-
PYTHONSTARTUP -
Если это имя читаемого файла, то команды Python в этом файле будут выполнены перед отображением первого приглашения в интерактивном режиме. Файл выполняется в том же пространстве имен, где выполняются интерактивные команды, так что объекты, определенные или импортированные в нем, могут использоваться без квалификаторов в интерактивной сессии. Вы также можете изменить приглашения
sys.ps1иsys.ps2и обработчикsys.__interactivehook__в этом файле.Вызывает событие аудита
cpython.run_startupс именем файла в качестве аргумента при запуске.
-
PYTHONOPTIMIZE -
Если это установлено в непустую строку, это эквивалентно указанию параметра
-O. Если установлено в целое число, это эквивалентно многократному указанию параметра-O.
-
PYTHONBREAKPOINT -
Если это установлено, оно задает вызываемый объект с использованием обозначения с точкой. Модуль, содержащий вызываемый объект, будет импортирован, а затем вызываемый объект будет запущен по умолчанию
sys.breakpointhook(), который сам вызывается встроенной функциейbreakpoint(). Если не установлено или установлено в пустую строку, это эквивалентно значению “pdb.set_trace”. Установка этого в строку “0” приводит к тому, что по умолчаниюsys.breakpointhook()ничего не делает, а сразу возвращается.Введено в версии 3.7.
-
PYTHONDEBUG -
Если это установлено в непустую строку, это эквивалентно указанию параметра
-d. Если установлено в целое число, это эквивалентно многократному указанию параметра-d.
-
PYTHONINSPECT -
Если это установлено в непустую строку, это эквивалентно указанию параметра
-i.Эту переменную также можно изменить с помощью кода Python, используя
os.environ, чтобы принудительно включить режим инспекции при завершении программы.
-
PYTHONUNBUFFERED -
Если это установлено в непустую строку, это эквивалентно указанию параметра
-u.
-
PYTHONVERBOSE -
Если это установлено в непустую строку, это эквивалентно указанию параметра
-v. Если установлено в целое число, это эквивалентно многократному указанию параметра-v.
-
PYTHONCASEOK -
Если это установлено, Python игнорирует регистр в операторах
import. Это работает только в Windows и macOS.
-
PYTHONDONTWRITEBYTECODE -
Если это установлено в непустую строку, Python не будет пытаться записать файлы
.pycпри импорте исходных модулей. Это эквивалентно указанию параметра-B.
-
PYTHONPYCACHEPREFIX -
Если это установлено, Python будет записывать файлы
.pycв зеркальном дереве каталогов по этому пути, а не в каталоги__pycache__внутри дерева исходных кодов. Это эквивалентно указанию параметра-Xpycache_prefix=PATH.Введено в версии 3.8.
-
PYTHONHASHSEED -
Если эта переменная не установлена или установлена в
random, для хеширования объектов str и bytes используется случайное значение.Если
PYTHONHASHSEEDустановлено в целое значение, оно используется как фиксированное значение для генерации hash() типов, охватываемых хешированием.Его цель состоит в том, чтобы позволить повторяемое хеширование, например, для самотестирования самого интерпретатора или для того, чтобы группа процессов python могли использовать общие значения хешей.
Целое число должно быть десятичным числом в диапазоне [0,4294967295]. Указание значения 0 отключит хеширование.
Введено в версии 3.2.3.
-
PYTHONINTMAXSTRDIGITS -
Если эта переменная установлена в целое число, она используется для настройки глобального ограничения длины строки целого числа интерпретатора длина целых строк.
Введено в версии 3.10.7.
-
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 — Каталог site-packages пользователя
-
PYTHONUSERBASE -
Определяет
user base directory, который используется для вычисления пути кuser site-packages directoryи пути установки Distutils дляpython setup.py install --user.См. также
PEP 370 – Директория site-packages пользователя
-
PYTHONEXECUTABLE -
Если эта переменная окружения установлена,
sys.argv[0]будет установлена в её значение вместо значения, полученного через C-runtime. Работает только на macOS.
-
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()для получения дополнительной информации.Новая в версии 3.4.
-
PYTHONPROFILEIMPORTTIME -
Если эта переменная окружения установлена в непустую строку, Python покажет, сколько времени занял каждый импорт. Это точно эквивалентно настройке
-X importtimeв командной строке.Новая в версии 3.7.
-
PYTHONASYNCIODEBUG -
Если эта переменная окружения установлена в непустую строку, включите режим отладки отладки модуля
asyncio.Новая в версии 3.4.
-
PYTHONMALLOC -
Устанавливает выделение памяти Python и/или устанавливает отладочные крючки.
Устанавливает семейство выделения памяти, используемое Python:
-
default: использовать стандартные выделения памяти. -
malloc: использовать функциюmalloc()библиотеки C для всех областей (PYMEM_DOMAIN_RAW,PYMEM_DOMAIN_MEM,PYMEM_DOMAIN_OBJ). -
pymalloc: использовать аллокатор pymalloc дляPYMEM_DOMAIN_MEMиPYMEM_DOMAIN_OBJобластей и использовать функциюmalloc()дляPYMEM_DOMAIN_RAWобласти.
Установить отладочные крючки:
-
debug: устанавливать отладочные крючки поверх стандартных выделений памяти. -
malloc_debug: то же, чтоmalloc, но также устанавливать отладочные крючки. -
pymalloc_debug: то же, чтоpymalloc, но также устанавливать отладочные крючки.
Изменено в версии 3.7: Добавлен аллокатор
"default".Новая в версии 3.6.
-
-
PYTHONMALLOCSTATS -
Если установлено в непустую строку, Python будет выводить статистику аллокатора памяти pymalloc каждый раз при создании новой области памяти pymalloc и при выходе.
Эта переменная игнорируется, если переменная окружения
PYTHONMALLOCиспользуется для принудительного использования аллокатораmalloc()библиотеки C или если Python сконфигурирован без поддержкиpymalloc.Изменено в версии 3.6: Эта переменная теперь также может быть использована в Python, скомпилированном в режиме выпуска. Теперь она не имеет эффекта, если установлена в пустую строку.
-
PYTHONLEGACYWINDOWSFSENCODING -
Если установлено в непустую строку, режим кодировки и обработчика ошибок по умолчанию кодировка файловой системы и обработчик ошибок будет возвращён к значениям до 3.6: ‘mbcs’ и ‘replace’ соответственно. В противном случае используются новые значения по умолчанию ‘utf-8’ и ‘surrogatepass’.
Это также можно включить во время выполнения с помощью
sys._enablelegacywindowsfsencoding().Доступность: Windows.
Новая в версии 3.6: См. PEP 529 для получения более подробной информации.
-
PYTHONLEGACYWINDOWSSTDIO -
Если установлено в непустую строку, не используется новый консольный читатель и писатель. Это означает, что символы Unicode будут закодированы в соответствии с активной кодовой страницей консоли, а не с использованием utf-8.
Эта переменная игнорируется, если стандартные потоки перенаправлены (в файлы или каналы) вместо использования буферов консоли.
Доступность: Windows.
Новая в версии 3.6.
-
PYTHONCOERCECLOCALE -
Если установлено значение
0, заставит основное приложение командной строки Python пропустить принудительное преобразование устаревших локалей C и POSIX на основе ASCII в более мощную альтернативу на основе UTF-8.Если эта переменная не установлена (или установлена на значение, отличное от
0), переменная среды переопределения локалиLC_ALLтакже не устанавливается, и текущая локаль, сообщённая для категорииLC_CTYPE, является либо стандартной локальюC, либо явно локалью на основе ASCIIPOSIX, тогда Python CLI попытается настроить следующие локали для категорииLC_CTYPEв указанном порядке перед загрузкой интерпретатора:C.UTF-8C.utf8UTF-8
Если установка одной из этих категорий локалей окажется успешной, то переменная среды
LC_CTYPEтакже будет соответствующим образом установлена в текущей среде процесса перед инициализацией среды выполнения Python. Это гарантирует, что обновлённое значение будет видно как интерпретатором, так и другими компонентами, чувствительными к локали, работающими в том же процессе (например, библиотекой GNUreadline), а также в дочерних процессах (независимо от того, запускают ли эти процессы интерпретатор Python), а также в операциях, которые запрашивают среду, а не текущую локаль C (например, собственный метод Pythonlocale.getdefaultlocale()).Настройка одной из этих локалей (явно или посредством описанного выше неявного принудительного преобразования локалей) автоматически включает обработчик
surrogateescapeобработчик ошибок дляsys.stdinиsys.stdout(sys.stderrпродолжает использоватьbackslashreplaceкак и в любой другой локали). Это поведение обработки потоков можно переопределить, используяPYTHONIOENCODING, как обычно.В целях отладки, установка
PYTHONCOERCECLOCALE=warnзаставит Python выводить сообщения об ошибках вstderr, если либо принудительное преобразование локали активируется, либо если локаль, которая должна была бы вызвать преобразование, всё ещё активна при инициализации среды выполнения Python.Обратите также внимание, что даже если принудительное преобразование локали отключено или если оно не находит подходящую целевую локаль,
PYTHONUTF8по-прежнему будет активироваться по умолчанию в устаревших локалях на основе ASCII. Обе функции должны быть отключены, чтобы принудительно заставить интерпретатор использоватьASCIIвместоUTF-8для интерфейсов системы.Доступность: *nix.
В версии 3.7: См. PEP 538 для получения дополнительной информации.
-
PYTHONDEVMODE -
Если эта переменная среды установлена на непустую строку, включите Режим разработки Python, вводя дополнительные проверки среды выполнения, которые слишком дороги, чтобы их включать по умолчанию.
В версии 3.7.
-
PYTHONUTF8 -
Если установлено значение
1, включить Режим UTF-8 Python.Если установлено значение
0, отключить Режим UTF-8 Python.Установка любой другой непустой строки вызывает ошибку при инициализации интерпретатора.
В версии 3.7.
-
PYTHONWARNDEFAULTENCODING -
Если эта переменная среды установлена на непустую строку, выводится предупреждение
EncodingWarning, когда используется локально-специфическое кодирование по умолчанию.См. Включение предупреждения EncodingWarning для получения подробностей.
В версии 3.10.
1.2.1. Переменные режима отладки
-
PYTHONTHREADDEBUG -
Если установлено, Python выведет информацию об отладке потоков в stdout.
Требуется отладочная сборка Python.
Устарело начиная с версии 3.10, будет удалено в версии 3.12.
-
PYTHONDUMPREFS -
Если установлено, Python выведет объекты и счётчики ссылок, которые всё ещё активны после завершения работы интерпретатора.
Требуется конфигурация Python с опцией сборки
--with-trace-refs.
© 2001–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.10/using/cmdline.html