This document is for an old version of Python that is no longer supported. You should upgrade, and read the Python documentation for the current stable release.

# 1. Командний рядок і середовище

Інтерпретатор CPython сканує командний рядок і середовище на наявність різних параметрів.

CPython implementation detail: Схеми командного рядка інших реалізацій можуть відрізнятися. Перегляньте Альтернативні реалізації для отримання додаткових ресурсів.

## 1.1. Командний рядок

Під час виклику Python ви можете вказати будь-який із цих параметрів:

    python [-bBdEhiIOqsSuvVWx?] [-c command | -m module-name | script | - ] [args]

Найпоширенішим випадком використання є, звичайно, простий виклик сценарію:

    python myscript.py

### 1.1.1. Параметри інтерфейсу

Інтерфейс інтерпретатора нагадує інтерфейс оболонки UNIX, але надає деякі додаткові методи виклику:

- When called with standard input connected to a tty device, it prompts for commands and executes them until an EOF (an end-of-file character, you can produce that with `Ctrl-D` on UNIX or `Ctrl-Z, Enter` on Windows) is read.

- При виклику з аргументом імені файлу або з файлом як стандартним введенням він читає та виконує сценарій із цього файлу.

- При виклику з аргументом назви каталогу він читає та виконує сценарій із відповідною назвою з цього каталогу.

- При виклику за допомогою команди `-c` виконується оператор(и) Python, наданий як команда. Тут команда може містити декілька операторів, розділених символом нового рядка. Пробіли на початку є важливими в операторах Python!

- При виклику за допомогою `-m назва-модуля` заданий модуль розташовується на шляху модуля 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` option can be used to run the script in isolated mode where `sys.path` contains neither the current directory nor the user’s site-packages directory. All `PYTHON*` environment variables are ignored, too.

  Багато модулів стандартної бібліотеки містять код, який викликається під час їх виконання як сценарій. Прикладом є модуль `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, що міститься в script, який має бути шляхом до файлової системи (абсолютним або відносним), що посилається на файл Python, каталог, що містить файл `__main__.py`, або файл zip, що містить `__main__. файл py`.

  Якщо вказано цей параметр, першим елементом `sys.argv` буде ім’я сценарію, подане в командному рядку.

  Якщо назва сценарію посилається безпосередньо на файл Python, каталог, що містить цей файл, додається до початку `sys.path`, і файл виконується як модуль `__main__`.

  Якщо назва сценарію посилається на каталог або zip-файл, назва сценарію додається до початку `sys.path`, а файл `__main__.py` у цьому місці виконується як `__main__` модуль.

  `-I` option can be used to run the script in isolated mode where `sys.path` contains neither the script’s directory nor the user’s site-packages directory. All `PYTHON*` environment variables are ignored, too.

  Викликає подію аудиту `cpython.run_file` з аргументом `filename`.

  Дивись також

  `runpy.run_path()`

    Еквівалентна функція, безпосередньо доступна для коду Python

Якщо параметр інтерфейсу не вказано, мається на увазі `-i`, `sys.argv[0]` є порожнім рядком (`""`), і поточний каталог буде додано на початку `sys.path`. Крім того, автоматично вмикається завершення вкладок і редагування історії, якщо вони доступні на вашій платформі (див. Конфігурація Readline).

Дивись також

Виклик Інтерпретатора

Змінено в версії 3.4: Автоматичне ввімкнення табуляції та редагування історії.

### 1.1.2. Загальні варіанти

`-?```
`-h```
`--help```

  Print a short description of all command line options.

`-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```

  Issue a warning when comparing `bytes` or `bytearray` with `str` or `bytes` with `int`. Issue an error when the option is given twice (`-bb`).

  Змінено в версії 3.5: Affects comparisons of `bytes` with `int`.

`-B```

  Якщо дано, Python не намагатиметься записати файли `.pyc` під час імпорту вихідних модулів. Дивіться також `PYTHONDONTWRITEBYTECODE`.

`--check-hash-based-pycs` `default|always|never`

  Керуйте поведінкою перевірки файлів `.pyc` на основі хешу. Перегляньте Анулювання кешованого байт-коду. Якщо встановлено `за замовчуванням`, позначені та не позначені файли кешу на основі хеш-коду перевіряються відповідно до їх семантики за замовчуванням. Якщо встановлено значення `always`, усі файли `.pyc` на основі хешу, позначені чи не позначені, перевіряються на відповідність їхньому вихідному файлу. Якщо встановлено значення `never`, файли `.pyc` на основі хешу не перевіряються на відповідність відповідним вихідним файлам.

  Цей параметр не впливає на семантику файлів `.pyc` на основі часових позначок.

`-d```

  Turn on parser debugging output (for expert only, depending on compilation options). See also `PYTHONDEBUG`.

`-E```

  Ignore all `PYTHON*` environment variables, e.g. `PYTHONPATH` and `PYTHONHOME`, that might be set.

`-i```

  When a script is passed as first argument or the `-c` option is used, enter interactive mode after executing the script or the command, even when `sys.stdin` does not appear to be a terminal. The `PYTHONSTARTUP` file is not read.

  Це може бути корисно для перевірки глобальних змінних або трасування стека, коли сценарій викликає виняткову ситуацію. Дивіться також `PYTHONINSPECT`.

`-I```

  Run Python in isolated mode. This also implies -E and -s. In isolated mode `sys.path` contains neither the script’s directory nor the user’s site-packages directory. All `PYTHON*` environment variables are ignored, too. Further restrictions may be imposed to prevent the user from injecting malicious code.

  Нове в версії 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.

`-q```

  Не відображайте повідомлення про авторські права та версію навіть в інтерактивному режимі.

  Нове в версії 3.2.

`-R```

  Увімкніть хеш-рандомізацію. Цей параметр діє, лише якщо для змінної середовища `PYTHONHASHSEED` встановлено значення `0`, оскільки рандомізацію хешу ввімкнено за замовчуванням.

  On previous versions of Python, this option turns on hash randomization, so that the `__hash__()` values of str and bytes objects are «salted» with an unpredictable random value. Although they remain constant within an individual Python process, they are not predictable between repeated invocations of Python.

  Hash randomization is intended to provide protection against a denial-of-service caused by carefully-chosen inputs that exploit the worst case performance of a dict construction, O(n2) complexity. See http://www.ocert.org/advisories/ocert-2011-003.html for details.

  `PYTHONHASHSEED` дозволяє встановити фіксоване значення для початкового секрету хешу.

  Змінено в версії 3.7: Опція більше не ігнорується.

  Нове в версії 3.2.3.

`-s```

  Не додавайте каталог `user site-packages` до `sys.path`.

  Дивись також

  PEP 370 – Каталог пакетів сайту для кожного користувача

`-S```

  Вимкніть імпорт модуля `site` і залежні від сайту маніпуляції `sys.path`, які він передбачає. Також вимкніть ці маніпуляції, якщо `site` буде явно імпортовано пізніше (викличте `site.main()`, якщо ви хочете, щоб вони були активовані).

`-u```

  Примусово розбуферизувати потоки stdout і stderr. Цей параметр не впливає на потік stdin.

  Дивіться також `PYTHONUNBUFFERED`.

  Змінено в версії 3.7: Текстовий рівень потоків stdout і stderr тепер не буферизується.

`-v```

  Print a message each time a module is initialized, showing the place (filename or built-in module) from which it is loaded. When given twice (`-vv`), print a message for each file that is checked for when searching for a module. Also provides information on module cleanup at exit. See also `PYTHONVERBOSE`.

`-W` `arg`

  Warning control. Python’s warning machinery by default prints warning messages to `sys.stderr`. A typical warning message has the following form:

      file:line: category: message

  By default, each warning is printed once for each source line where it occurs. This option controls how often warnings are printed.

  Multiple `-W` options may be given; when a warning matches more than one option, the action for the last matching option is performed. Invalid `-W` options are ignored (though, a warning message is printed about invalid options when the first warning is issued).

  Warnings can also be controlled using the `PYTHONWARNINGS` environment variable and from within a Python program using the `warnings` module.

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

      -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

  The action names can be abbreviated as desired (e.g. `-Wi`, `-Wd`, `-Wa`, `-We`) and the interpreter will resolve them to the appropriate action name.

  Перегляньте Фільтр попереджень і Опис фільтрів попереджень для отримання додаткової інформації.

`-x```

  Пропустіть перший рядок джерела, дозволяючи використовувати не-Unix форми `#!cmd`. Це призначено лише для спеціального злому DOS.

`-X```

  Зарезервовано для різних варіантів реалізації. Наразі CPython визначає такі можливі значення:

  - `-X faulthandler` to enable `faulthandler`;

  - `-X oldparser`: enable the traditional LL(1) parser. See also `PYTHONOLDPARSER` and PEP 617.

  - `-X showrefcount` to output the total reference count and number of used memory blocks when the program finishes or after each statement in the interactive interpreter. This only works on debug builds.

  - `-X tracemalloc` to start tracing Python memory allocations using the `tracemalloc` module. By default, only the most recent frame is stored in a traceback of a trace. Use `-X tracemalloc=NFRAME` to start tracing with a traceback limit of NFRAME frames. See the `tracemalloc.start()` for more information.

  - `-X int_max_str_digits` configures the integer string conversion length limitation. See also `PYTHONINTMAXSTRDIGITS`.

  - `-X importtime`, щоб показати, скільки часу займає кожен імпорт. Він показує назву модуля, сукупний час (включно з вкладеним імпортом) і власний час (за винятком вкладеного імпорту). Зверніть увагу, що його вихід може бути порушений у багатопотоковій програмі. Типовим використанням є `python3 -X importtime -c 'import asyncio'`. Дивіться також `PYTHONPROFILEIMPORTTIME`.

  - `-X dev`: enable Python Development Mode, introducing additional runtime checks that are too expensive to be enabled by default.

  - `-X utf8` enables UTF-8 mode for operating system interfaces, overriding the default locale-aware mode. `-X utf8=0` explicitly disables UTF-8 mode (even when it would otherwise activate automatically). See `PYTHONUTF8` for more details.

  - `-X pycache_prefix=PATH` дає змогу записувати файли `.pyc` до паралельного дерева з коренем у вказаному каталозі замість дерева коду. Дивіться також `PYTHONPYCACHEPREFIX`.

  Це також дозволяє передавати довільні значення та отримувати їх через словник `sys._xoptions`.

  Змінено в версії 3.2: The `-X` option was added.

  Нове в версії 3.3: The `-X faulthandler` option.

  Нове в версії 3.4: The `-X showrefcount` and `-X tracemalloc` options.

  Нове в версії 3.6: The `-X showalloccount` option.

  Нове в версії 3.7: The `-X importtime`, `-X dev` and `-X utf8` options.

  Нове в версії 3.8: The `-X pycache_prefix` option. The `-X dev` option now logs `close()` exceptions in `io.IOBase` destructor.

  Змінено в версії 3.9: Using `-X dev` option, check encoding and errors arguments on string encoding and decoding operations.

  The `-X showalloccount` option has been removed.

  Нове в версії 3.9.14: The `-X int_max_str_digits` option.

  Deprecated since version 3.9, will be removed in version 3.10: The `-X oldparser` option.

### 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` кілька разів.

`PYTHONOLDPARSER`

  If this is set to a non-empty string, enable the traditional LL(1) parser.

  See also the `-X` `oldparser` option and PEP 617.

  Deprecated since version 3.9, will be removed in version 3.10.

`PYTHONINSPECT`

  Якщо для цього значення встановлено непорожній рядок, це еквівалентно вказуванню параметра `-i`.

  Цю змінну також можна змінити за допомогою коду Python за допомогою `os.environ` для примусового режиму перевірки після завершення програми.

  Викликає подію аудиту `cpython.run_stdin` без аргументів.

  Змінено в версії 3.9.20: (also 3.8.20) Emits audit events.

`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`

  If this variable is set to an integer, it is used to configure the interpreter’s global integer string conversion length limitation.

  Нове в версії 3.9.14.

`PYTHONIOENCODING`

  Якщо це встановлено перед запуском інтерпретатора, воно замінює кодування, що використовується для stdin/stdout/stderr, у синтаксисі `encodingname:errorhandler`. Частини `encodingname` і `:errorhandler` є необов’язковими та мають те ж значення, що й у `str.encode()`.

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

  Змінено в версії 3.4: Частина `назва кодування` тепер необов’язкова.

  Змінено в версії 3.6: У Windows кодування, визначене цією змінною, ігнорується для інтерактивних буферів консолі, якщо також не вказано `PYTHONLEGACYWINDOWSSTDIO`. Файли та канали, переспрямовані через стандартні потоки, не впливають.

`PYTHONNOUSERSITE`

  Якщо це встановлено, Python не додаватиме каталог `user site-packages` до `sys.path`.

  Дивись також

  PEP 370 – Каталог пакетів сайту для кожного користувача

`PYTHONUSERBASE`

  Defines the `user base directory`, which is used to compute the path of the `user site-packages directory` and Distutils installation paths for `python setup.py install --user`.

  Дивись також

  PEP 370 – Каталог пакетів сайту для кожного користувача

`PYTHONEXECUTABLE`

  Якщо цю змінну середовища встановлено, `sys.argv[0]` буде встановлено її значення замість значення, отриманого через середовище виконання C. Працює лише на 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`

  If this environment variable is set to a non-empty string, `faulthandler.enable()` is called at startup: install a handler for `SIGSEGV`, `SIGFPE`, `SIGABRT`, `SIGBUS` and `SIGILL` signals to dump the Python traceback. This is equivalent to `-X` `faulthandler` option.

  Нове в версії 3.3.

`PYTHONTRACEMALLOC`

  If this environment variable is set to a non-empty string, start tracing Python memory allocations using the `tracemalloc` module. The value of the variable is the maximum number of frames stored in a traceback of a trace. For example, `PYTHONTRACEMALLOC=1` stores only the most recent frame. See the `tracemalloc.start()` for more information.

  Нове в версії 3.4.

`PYTHONPROFILEIMPORTTIME`

  If this environment variable is set to a non-empty string, Python will show how long each import takes. This is exactly equivalent to setting `-X importtime` on the command line.

  Нове в версії 3.7.

`PYTHONASYNCIODEBUG`

  Якщо для цієї змінної середовища встановлено непорожній рядок, увімкніть режим налагодження модуля `asyncio`.

  Нове в версії 3.4.

`PYTHONMALLOC`

  Налаштуйте розподільники пам’яті Python та/або встановіть хуки налагодження.

  Встановіть сімейство розподільників пам’яті, яке використовує Python:

  - `за замовчуванням`: використовуйте розподільники пам’яті за замовчуванням.

  - `malloc`: use the `malloc()` function of the C library for all domains (`PYMEM_DOMAIN_RAW`, `PYMEM_DOMAIN_MEM`, `PYMEM_DOMAIN_OBJ`).

  - `pymalloc`: use the pymalloc allocator for `PYMEM_DOMAIN_MEM` and `PYMEM_DOMAIN_OBJ` domains and use the `malloc()` function for the `PYMEM_DOMAIN_RAW` domain.

  Install debug hooks:

  - `debug`: установіть хуки налагодження поверх розподілювачів пам’яті за замовчуванням.

  - `malloc_debug`: те саме, що `malloc`, але також встановлює хуки налагодження.

  - `pymalloc_debug`: те саме, що `pymalloc`, але також встановлює хуки налагодження.

  See the default memory allocators and the `PyMem_SetupDebugHooks()` function (install debug hooks on Python memory allocators).

  Змінено в версії 3.7: Додано розподільник `"default"`.

  Нове в версії 3.6.

`PYTHONMALLOCSTATS`

  Якщо встановлено непорожній рядок, Python друкуватиме статистику розподільника пам’яті pymalloc кожного разу, коли створюється нова арена об’єкта pymalloc, а також після завершення роботи.

  Ця змінна ігнорується, якщо змінна середовища `PYTHONMALLOC` використовується для примусового виділення `malloc()` бібліотеки C, або якщо Python налаштовано без підтримки `pymalloc`.

  Змінено в версії 3.6: Цю змінну тепер також можна використовувати на Python, скомпільованому в режимі випуску. Тепер це не має ефекту, якщо встановлено порожній рядок.

`PYTHONLEGACYWINDOWSFSENCODING`

  If set to a non-empty string, the default filesystem encoding and errors mode will revert to their pre-3.6 values of „mbcs“ and „replace“, respectively. Otherwise, the new defaults „utf-8“ and „surrogatepass“ are used.

  This may also be enabled at runtime with `sys._enablelegacywindowsfsencoding()`.

  Availability: Windows.

  Нове в версії 3.6: Дивіться PEP 529 для більш детальної інформації.

`PYTHONLEGACYWINDOWSSTDIO`

  Якщо встановлено непорожній рядок, новий засіб читання та запису консолі не використовується. Це означає, що символи Unicode кодуватимуться відповідно до активної кодової сторінки консолі, а не за допомогою utf-8.

  Ця змінна ігнорується, якщо стандартні потоки перенаправляються (до файлів або каналів), а не посилаються на буфери консолі.

  Availability: Windows.

  Нове в версії 3.6.

`PYTHONCOERCECLOCALE`

  Якщо встановлено значення `0`, основна програма командного рядка Python пропускає приведення застарілих локалей на основі ASCII C і POSIX до більш дієвої альтернативи на основі UTF-8.

  Якщо цю змінну не встановлено (або встановлено значення, відмінне від `0`), змінна середовища `LC_ALL`, яка замінює локаль, також не встановлена, і поточна локаль повідомляється для `LC_CTYPE` категорія є або локаллю `C` за замовчуванням, або явно заснованою на ASCII локаллю `POSIX`, тоді Python CLI спробує налаштувати такі мови для категорії `LC_CTYPE` у зазначеному порядку перед завантаженням середовища виконання інтерпретатора:

  - `C.UTF-8`

  - `C.utf8`

  - `UTF-8`

  Якщо встановлення однієї з цих категорій локалі вдасться, тоді змінна середовища `LC_CTYPE` також буде встановлена відповідним чином у поточному середовищі процесу до ініціалізації середовища виконання Python. Це гарантує, що окрім перегляду як самим інтерпретатором, так і іншими компонентами, що працюють у тому самому процесі (таких як бібліотека GNU `readline`), оновлене налаштування також видно у підпроцесах (незалежно від того, чи не ці процеси запускають інтерпретатор Python), а також в операціях, які запитують середовище, а не поточну локаль C (наприклад, власний `locale.getdefaultlocale()` Python).

  Налаштування однієї з цих локалей (явно або за допомогою зазначеного вище неявного примусу до локалі) автоматично вмикає `surrogateescape` обробник помилок для `sys.stdin` і `sys.stdout` (`sys.stderr` продовжує використовувати `backslashreplace`, як і в будь-якій іншій локалі). Цю поведінку обробки потоку можна змінити за допомогою `PYTHONIOENCODING`, як зазвичай.

  З метою налагодження налаштування `PYTHONCOERCECLOCALE=warn` призведе до того, що Python видаватиме попереджувальні повідомлення на `stderr`, якщо або активується примусове налаштування локалі, або якщо локаль, яка могла б ініціювати примусове налаштування, все ще активна, коли Python час виконання ініціалізовано.

  Також зауважте, що навіть якщо примусове налаштування локалі вимкнено або якщо йому не вдається знайти відповідну цільову локаль, `PYTHONUTF8` усе одно активується за замовчуванням у застарілих локалях на основі ASCII. Обидві функції мають бути вимкнені, щоб змусити інтерпретатор використовувати `ASCII` замість `UTF-8` для системних інтерфейсів.

  Availability: *nix.

  Нове в версії 3.7: Дивіться PEP 538 для більш детальної інформації.

`PYTHONDEVMODE`

  If this environment variable is set to a non-empty string, enable Python Development Mode, introducing additional runtime checks that are too expensive to be enabled by default.

  Нове в версії 3.7.

`PYTHONUTF8`

  If set to `1`, enables the interpreter’s UTF-8 mode, where `UTF-8` is used as the text encoding for system interfaces, regardless of the current locale setting.

  This means that:

  > - `sys.getfilesystemencoding()` returns `'UTF-8'` (the locale encoding is ignored).

  > - `locale.getpreferredencoding()` returns `'UTF-8'` (the locale encoding is ignored, and the function’s `do_setlocale` parameter has no effect).

  > - `sys.stdin`, `sys.stdout`, and `sys.stderr` all use UTF-8 as their text encoding, with the `surrogateescape` error handler being enabled for `sys.stdin` and `sys.stdout` (`sys.stderr` continues to use `backslashreplace` as it does in the default locale-aware mode)

  As a consequence of the changes in those lower level APIs, other higher level APIs also exhibit different default behaviours:

  > - Command line arguments, environment variables and filenames are decoded to text using the UTF-8 encoding.

  > - `os.fsdecode()` and `os.fsencode()` use the UTF-8 encoding.

  > - `open()`, `io.open()`, and `codecs.open()` use the UTF-8 encoding by default. However, they still use the strict error handler by default so that attempting to open a binary file in text mode is likely to raise an exception rather than producing nonsense data.

  Note that the standard stream settings in UTF-8 mode can be overridden by `PYTHONIOENCODING` (just as they can be in the default locale-aware mode).

  If set to `0`, the interpreter runs in its default locale-aware mode.

  Встановлення будь-якого іншого непорожнього рядка викликає помилку під час ініціалізації інтерпретатора.

  If this environment variable is not set at all, then the interpreter defaults to using the current locale settings, unless the current locale is identified as a legacy ASCII-based locale (as described for `PYTHONCOERCECLOCALE`), and locale coercion is either disabled or fails. In such legacy locales, the interpreter will default to enabling UTF-8 mode unless explicitly instructed not to do so.

  Also available as the `-X` `utf8` option.

  Нове в версії 3.7: See PEP 540 for more details.

### 1.2.1. Змінні режиму налагодження

Setting these variables only has an effect in a debug build of Python.

`PYTHONTHREADDEBUG`

  If set, Python will print threading debug info.

  Need Python configured with the `--with-pydebug` build option.

`PYTHONDUMPREFS`

  Якщо встановлено, Python виводитиме об’єкти та лічильники посилань, які ще живі після вимкнення інтерпретатора.

  Need Python configured with the `--with-trace-refs` build option.