Spec-Zone.ru › Python 3.9

Командная строка и среда

Интерпретатор 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).

Изменено в версии 3.5: Воздействует на сравнение bytes с int.

-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 этот параметр включал случайное хеширование, так что значения __hash__() объектов str и bytes «засаливались» непредсказуемым случайным значением. Хотя они остаются постоянными в рамках одного процесса Python, они непредсказуемы при повторных запусках Python.

Случайное хеширование предназначено для защиты от атаки отказа в обслуживании, вызванной тщательно подобранными входными данными, которые используют худший случай производительности построения словаря, сложность 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) выводит сообщение для каждого файла, который проверяется при поиске модуля. Также предоставляет информацию о очистке модулей при выходе. См. также PYTHONVERBOSE.

-W arg

Управление предупреждениями. Машина предупреждений Python по умолчанию выводит сообщения о предупреждениях в sys.stderr. Типичное сообщение о предупреждении имеет следующий вид:

file:line: category: message

По умолчанию каждое предупреждение печатается один раз для каждой строки исходного кода, где оно встречается. Этот параметр контролирует частоту вывода предупреждений.

Можно указать несколько параметров -W; когда предупреждение соответствует нескольким параметрам, выполняется действие последнего соответствующего параметра. Неверные параметры -W игнорируются (хотя сообщение о предупреждении о неверных параметрах выводится при первом возникновении предупреждения).

Предупреждения также можно контролировать с помощью переменной окружения PYTHONWARNINGS и внутри программы Python с помощью модуля warnings.

Самые простые настройки применяют определенное действие безусловно ко всем предупреждениям, выводимым процессом (даже к тем, которые по умолчанию игнорируются):

-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, -Wd, -Wa, -We) и интерпретатор преобразует их в соответствующее имя действия.

Подробнее см. Фильтр предупреждений и Описание фильтров предупреждений.

-x

Пропускает первую строку исходного кода, что позволяет использовать не-Unix формы #!cmd. Это предназначено только для DOS-специфического хэка.

-X

Зарезервировано для различных параметров, специфичных для реализации. CPython в настоящее время определяет следующие возможные значения:

  • -X faulthandler для включения faulthandler;
  • -X oldparser: включение традиционного парсера LL(1). См. также PYTHONOLDPARSER и PEP 617.
  • -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 включает UTF-8 режим для интерфейсов операционной системы, переопределяя режим, зависящий от локальной настройки. -X utf8=0 явно отключает режим UTF-8 (даже когда он в противном случае автоматически активируется). Дополнительные подробности см. в PYTHONUTF8.
  • -X pycache_prefix=PATH включает запись .pyc файлов в параллельное дерево, корень которого находится в указанной директории, вместо сохранения в дереве кода. См. также PYTHONPYCACHEPREFIX.

Также позволяет передавать произвольные значения и получать их через словарь 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.9.14: Параметр -X int_max_str_digits.

Устарело с версии 3.9, будет удалено в версии 3.10: Параметр -X oldparser.

1.1.4. Параметры, которые не следует использовать

-J

Зарезервировано для использования Jython.

END_OF_DOCUMENT_MARKER

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 несколько раз.

PYTHONOLDPARSER

Если это значение установлено в непустую строку, активируется традиционный синтаксический анализатор LL(1).

См. также -X опцию oldparser и PEP 617.

Устарело начиная с версии 3.9, будет удалено в версии 3.10.

PYTHONINSPECT

Если это значение установлено в непустую строку, это эквивалентно указанию опции -i.

Эта переменная также может быть изменена кодом Python, используя os.environ, чтобы принудительно включить режим инспектирования при завершении программы.

PYTHONUNBUFFERED

Если это значение установлено в непустую строку, это эквивалентно указанию опции -u.

PYTHONVERBOSE

Если это значение установлено в непустую строку, это эквивалентно указанию опции -v. Если это значение установлено в целое число, это эквивалентно указанию опции -v несколько раз.

PYTHONCASEOK

Если это значение установлено, Python игнорирует регистр в операторах import. Это работает только в Windows и macOS.

PYTHONDONTWRITEBYTECODE

Если это значение установлено в непустую строку, Python не будет пытаться записать файлы .pyc при импорте исходных модулей. Это эквивалентно указанию опции -B.

PYTHONPYCACHEPREFIX

Если это значение установлено, Python будет записывать файлы .pyc в зеркальном каталоге по этому пути, вместо каталогов __pycache__ в структуре исходного дерева. Это эквивалентно указанию опции -X pycache_prefix=PATH.

Новое в версии 3.8.

PYTHONHASHSEED

Если эта переменная не установлена или установлена в random, для хеширования объектов str и bytes используется случайное значение.

Если PYTHONHASHSEED установлена в целое число, оно используется как фиксированное значение для генерации hash() для типов, охватываемых случайным хешированием.

Это позволяет повторяемое хеширование, например, для самотестов самого интерпретатора или для того, чтобы группа процессов Python могли совместно использовать значения хеша.

Целое число должно быть десятичным числом в диапазоне [0,4294967295]. Указание значения 0 отключит случайное хеширование.

Новое в версии 3.2.3.

PYTHONINTMAXSTRDIGITS

Если эта переменная установлена в целое число, она используется для настройки глобального ограничения длины строки при преобразовании целых чисел интерпретатора целое число.

Новое в версии 3.9.14.

PYTHONIOENCODING

Если это значение установлено перед запуском интерпретатора, оно переопределяет кодировку, используемую для stdin/stdout/stderr, в формате encodingname:errorhandler. Обе части encodingname и :errorhandler являются необязательными и имеют то же значение, что и в str.encode().

Для stderr часть :errorhandler игнорируется; обработчик всегда будет 'backslashreplace'.

Изменено в версии 3.4: Часть encodingname теперь необязательна.

Изменено в версии 3.6: В Windows кодировка, указанная в этой переменной, игнорируется для буферов интерактивной консоли, если также не указана PYTHONLEGACYWINDOWSSTDIO. Файлы и каналы, перенаправленные через стандартные потоки, не затрагиваются.

END_OF_DOCUMENT_MARKER
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. Это эквивалентно параметру -X faulthandler.

Новое в версии 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, но также устанавливает отладочные крючки.

См. стандартные аллокаторы памяти и функцию PyMem_SetupDebugHooks() (установка отладочных крючков на Python-аллокаторы памяти).

Изменено в версии 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.

END_OF_DOCUMENT_MARKER
PYTHONCOERCECLOCALE

Если установлено в значение 0, заставляет основное приложение командной строки Python пропустить принудительное преобразование устаревших ASCII-базовых локалей C и POSIX к более мощному варианту на основе UTF-8.

Если эта переменная не установлена (или установлена в значение, отличное от 0), переменная среды LC_ALL также не устанавливается, а текущая локаль, сообщаемая для категории LC_CTYPE, — это либо локаль по умолчанию C, либо явным образом ASCII-базовая локаль POSIX, тогда интерпретатор Python попытается настроить следующие локали для категории LC_CTYPE в указанном порядке перед загрузкой интерпретатора:

  • C.UTF-8
  • C.utf8
  • UTF-8

Если установка одной из этих категорий локалей окажется успешной, то переменная среды LC_CTYPE также будет соответствующим образом установлена в текущей среде процесса перед инициализацией среды выполнения Python. Это гарантирует, что обновлённое значение видно как для самого интерпретатора, так и для других компонентов, учитывающих локаль, работающих в том же процессе (например, для библиотеки GNU readline), а также в дочерних процессах (независимо от того, запускают ли эти процессы интерпретатор Python), а также в операциях, которые запрашивают окружение, а не текущую локаль C (например, в собственном методе Python locale.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 интерпретатора, где UTF-8 используется в качестве кодировки текста для системных интерфейсов независимо от текущей настройки локали.

Это означает, что:

  • sys.getfilesystemencoding() возвращает 'UTF-8' (кодировка локали игнорируется).
  • locale.getpreferredencoding() возвращает 'UTF-8' (кодировка локали игнорируется, и параметр функции do_setlocale не имеет эффекта).
  • sys.stdin, sys.stdout и sys.stderr все используют UTF-8 в качестве кодировки текста, при этом обработчик ошибок surrogateescape включён для sys.stdin и sys.stdout (sys.stderr продолжает использовать backslashreplace так же, как и в режиме, учитывающем локаль).

Вследствие изменений в этих API нижнего уровня, другие API более высокого уровня также демонстрируют разные значения по умолчанию:

  • Аргументы командной строки, переменные среды и имена файлов декодируются в текст с помощью кодировки UTF-8.
  • os.fsdecode() и os.fsencode() используют кодировку UTF-8.
  • open(), io.open() и codecs.open() используют кодировку UTF-8 по умолчанию. Однако по умолчанию они все ещё используют строгий обработчик ошибок, чтобы попытка открытия двоичного файла в текстовом режиме скорее всего привела к исключению, а не к генерации бессмысленных данных.

Обратите внимание, что стандартные настройки потоков в режиме UTF-8 можно переопределить с помощью PYTHONIOENCODING (как и в режиме, учитывающем локаль).

Если установлено в 0, интерпретатор работает в своём режиме, учитывающем локаль по умолчанию.

Установка любой другой непустой строки вызывает ошибку во время инициализации интерпретатора.

Если эта переменная среды вообще не установлена, интерпретатор по умолчанию использует текущие настройки локали, за исключением случаев, когда текущая локаль распознаётся как устаревшая ASCII-базовая локаль (как описано для PYTHONCOERCECLOCALE), и принудительное преобразование локалей либо отключено, либо завершается неудачей. В таких устаревших локалях интерпретатор по умолчанию включит режим UTF-8, если явно не указано обратное.

Также доступно в качестве параметра -X utf8.

Новая в версии 3.7: См. PEP 540 для получения более подробной информации.

1.2.1. Переменные режима отладки

Установка этих переменных оказывает действие только в отладочной сборке Python.

PYTHONTHREADDEBUG

Если установлена, Python выведет отладочную информацию о потоках.

Требуется настройка Python с опцией сборки --with-pydebug.

PYTHONDUMPREFS

Если установлена, Python выведет объекты и счётчики ссылок, которые всё ещё активны после завершения работы интерпретатора.

Требуется настройка Python с опцией сборки --with-trace-refs.

© 2001–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.9/using/cmdline.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API