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

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

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

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

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

    python [-bBdEhiIOPqRsSuvVWx?] [-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. For more on interactive mode, see Інтерактивний режим.

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

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

- When called with `-c command`, it executes the Python statement(s) given as command. Here command may contain multiple statements separated by newlines.

- При виклику за допомогою `-m назва-модуля` заданий модуль розташовується на шляху модуля Python і виконується як сценарій.

У неінтерактивному режимі весь вхід аналізується перед виконанням.

Опція інтерфейсу завершує список опцій, які використовує інтерпретатор, усі послідовні аргументи закінчаться в `sys.argv` – зверніть увагу, що перший елемент, індекс нуль (`sys.argv[0]`) , це рядок, що відображає джерело програми.

-c <command>

  Виконайте код Python у команді. команда може бути одним або декількома операторами, розділеними символом нового рядка, зі значними пробілами на початку, як у звичайному коді модуля.

  Якщо вказано цей параметр, першим елементом `sys.argv` буде `"-c"`, а поточний каталог буде додано до початку `sys.path` (дозволяючи модулі у цьому каталозі, який буде імпортовано як модулі верхнього рівня).

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

  Змінено в версії 3.14: command is automatically dedented before execution.

-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 and corresponding environment variables and exit.

--help-env

  Print a short description of Python-specific environment variables and exit.

  Added in version 3.11.

--help-xoptions

  Print a description of implementation-specific `-X` options and exit.

  Added in version 3.11.

--help-all

  Print complete usage information and exit.

  Added in version 3.11.

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

  Added in version 3.6: Параметр `-VV`.

### 1.1.3. Різні варіанти

-b

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

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

  Застаріло починаючи з версії 3.15: Deprecate `-b` and `-bb` command line options and schedule them to become no-op in Python 3.17. These were primarily helpers for the Python 2 -> 3 transition. Starting with Python 3.17, no `BytesWarning` will be raised for these cases; use a type checker instead.

-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). See also the `PYTHONDEBUG` environment variable.

  This option requires a debug build of Python, otherwise it’s ignored.

-E

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

  See also the `-P` and `-I` (isolated) options.

-i

  Enter interactive mode after execution.

  Using the `-i` option will enter interactive mode in any of the following circumstances:

  - When a script is passed as first argument

  - When the `-c` option is used

  - When the `-m` option is used

  Interactive mode will start 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`, `-P` and `-s` options.

  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.

  Added in version 3.4.

-O

  Видаліть оператори assert і будь-який код, який залежить від значення `__debug__`. Збільште назву файлу для скомпільованих (bytecode) файлів, додавши `.opt-1` перед розширенням `.pyc` (див. PEP 488). Дивіться також `PYTHONOPTIMIZE`.

  Змінено в версії 3.5: Змініть назви файлів `.pyc` відповідно до PEP 488.

-OO

  Виконайте `-O` і також відкиньте рядки документації. Збільште назву файлу для скомпільованих (bytecode) файлів, додавши `.opt-2` перед розширенням `.pyc` (див. PEP 488).

  Змінено в версії 3.5: Змініть назви файлів `.pyc` відповідно до PEP 488.

-P

  Don’t prepend a potentially unsafe path to `sys.path`:

  - `python -m module` command line: Don’t prepend the current working directory.

  - `python script.py` command line: Don’t prepend the script’s directory. If it’s a symbolic link, resolve symbolic links.

  - `python -c code` and `python` (REPL) command lines: Don’t prepend an empty string, which means the current working directory.

  See also the `PYTHONSAFEPATH` environment variable, and `-E` and `-I` (isolated) options.

  Added in version 3.11.

-q

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

  Added in version 3.2.

-R

  Turn on hash randomization. This option only has an effect if the `PYTHONHASHSEED` environment variable is set to anything other than `random`, since hash randomization is enabled by default.

  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 https://ocert.org/advisories/ocert-2011-003.html for details.

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

  Added in version 3.2.3.

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

-s

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

  See also `PYTHONNOUSERSITE`.

  Дивись також

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

-S

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

-u

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

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

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

-v

  Друкувати повідомлення кожного разу, коли модуль ініціалізовано, із зазначенням місця (ім’я файлу чи вбудованого модуля), з якого він завантажується. Якщо вказано двічі (`-vv`), вивести повідомлення для кожного файлу, який перевіряється під час пошуку модуля. Також надає інформацію про очищення модуля при виході.

  Змінено в версії 3.10: Модуль `site` повідомляє про шляхи сайту та файли `.pth`, що обробляються.

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

-W arg

  Контроль попередження. Механізм попередження Python за замовчуванням друкує попереджувальні повідомлення до `sys.stderr`.

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

      -Wdefault  # Warn once per call location
      -Werror    # Convert to exceptions
      -Walways   # Warn every time
      -Wall      # Same as -Walways
      -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.

  Поле action описано вище, але застосовується лише до попереджень, які відповідають решті полів.

  The message field must match the start of the warning message; this match is case-insensitive. If it starts and ends with a forward slash (`/`), it specifies a regular expression, otherwise it specifies a literal string.

  Поле category відповідає категорії попередження (наприклад, `DeprecationWarning`). Це має бути назва класу; перевірка відповідності, чи є фактична категорія попередження повідомлення підкласом зазначеної категорії попередження.

  The module field matches the (fully qualified) module name; this match is case-sensitive. If it starts and ends with a forward slash (`/`), it specifies a regular expression that the start of the fully qualified module name must match, otherwise it specifies a literal string that the fully qualified module name must be equal to.

  Поле lineno відповідає номеру рядка, де нуль відповідає всім номерам рядків і, отже, еквівалентний пропущеному номеру рядка.

  Можна надати кілька параметрів `-W`; коли попередження відповідає більш ніж одному параметру, виконується дія для останнього відповідного параметра. Недійсні параметри `-W` ігноруються (проте, коли видається перше попередження, друкується попередження про недійсні параметри).

  Попередженнями також можна керувати за допомогою змінної середовища `PYTHONWARNINGS` і з програми Python за допомогою модуля `warnings`. Наприклад, функцію `warnings.filterwarnings()` можна використовувати для використання регулярного виразу в попередженні.

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

  Змінено в версії 3.15: Added regular expression support for message and module.

-x

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

-X

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

  - `-X faulthandler` to enable `faulthandler`. See also `PYTHONFAULTHANDLER`.

    Added in version 3.3.

  - `-X showrefcount` для виведення загальної кількості посилань і кількості використаних блоків пам’яті після завершення програми або після кожного оператора в інтерактивному інтерпретаторі. Це працює лише на debug builds.

    Added in version 3.4.

  - `-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 `tracemalloc.start()` and `PYTHONTRACEMALLOC` for more information.

    Added in version 3.4.

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

    Added in version 3.11.

  - `-X importtime` to show how long each import takes. It shows module name, cumulative time (including nested imports) and self time (excluding nested imports). Note that its output may be broken in multi-threaded application. Typical usage is `python -X importtime -c 'import asyncio'`.

    `-X importtime=2` enables additional output that indicates when an imported module has already been loaded. In such cases, the string `cached` will be printed in both time columns.

    See also `PYTHONPROFILEIMPORTTIME`.

    Added in version 3.7.

    Змінено в версії 3.14: Added `-X importtime=2` to also trace imports of loaded modules, and reserved values other than `1` and `2` for future use.

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

    Added in version 3.7.

  - `-X utf8` enables the Python UTF-8 Mode. `-X utf8=0` explicitly disables Python UTF-8 Mode (even when it would otherwise activate automatically). See also `PYTHONUTF8`.

    Added in version 3.7.

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

    Added in version 3.8.

  - `-X warn_default_encoding` видає `EncodingWarning`, коли для відкриття файлів використовується кодування за умовчанням, що залежить від локалі. Дивіться також `PYTHONWARNDEFAULTENCODING`.

    Added in version 3.10.

  - `-X no_debug_ranges` disables the inclusion of the tables mapping extra location information (end line, start column offset and end column offset) to every instruction in code objects. This is useful when smaller code objects and pyc files are desired as well as suppressing the extra visual location indicators when the interpreter displays tracebacks. See also `PYTHONNODEBUGRANGES`.

    Added in version 3.11.

  - `-X frozen_modules` determines whether or not frozen modules are ignored by the import machinery. A value of `on` means they get imported and `off` means they are ignored. The default is `on` if this is an installed Python (the normal case). If it’s under development (running from the source tree) then the default is `off`. Note that the `importlib_bootstrap` and `importlib_bootstrap_external` frozen modules are always used, even if this flag is set to `off`. See also `PYTHON_FROZEN_MODULES`.

    Added in version 3.11.

  - `-X perf` enables support for the Linux `perf` profiler. When this option is provided, the `perf` profiler will be able to report Python calls. This option is only available on some platforms and will do nothing if is not supported on the current system. The default value is «off». See also `PYTHONPERFSUPPORT` and Python support for the perf map compatible profilers.

    Added in version 3.12.

  - `-X perf_jit` enables support for the Linux `perf` profiler with DWARF support. When this option is provided, the `perf` profiler will be able to report Python calls using DWARF information. This option is only available on some platforms and will do nothing if is not supported on the current system. The default value is «off». See also `PYTHON_PERF_JIT_SUPPORT` and Python support for the perf map compatible profilers.

    Added in version 3.13.

  - `-X disable_remote_debug` disables the remote debugging support as described in PEP 768. This includes both the functionality to schedule code for execution in another process and the functionality to receive code for execution in the current process.

    This option is only available on some platforms and will do nothing if is not supported on the current system. See also `PYTHON_DISABLE_REMOTE_DEBUG` and PEP 768.

    Added in version 3.14.

  - `-X cpu_count=n` overrides `os.cpu_count()`, `os.process_cpu_count()`, and `multiprocessing.cpu_count()`. n must be greater than or equal to 1. This option may be useful for users who need to limit CPU resources of a container system. See also `PYTHON_CPU_COUNT`. If n is `default`, nothing is overridden.

    Added in version 3.13.

  - `-X presite=module` or `-X presite=module:func` specifies an entry point that should be executed before the `site` module is executed and before the `__main__` module exists. Therefore, the imported module isn’t `__main__`. This can be used to execute code early during Python initialization. Python needs to be built in debug mode for this option to exist. See also `PYTHON_PRESITE`.

    Змінено в версії 3.15: Accept also `module:func` entry point format.

    Added in version 3.13.

  - `-X gil=0,1` forces the GIL to be disabled or enabled, respectively. Setting to `0` is only available in builds configured with `--disable-gil`. See also `PYTHON_GIL` and Free-threaded CPython.

    Added in version 3.13.

  - `-X thread_inherit_context=0,1` causes `Thread` to, by default, use a copy of context of the caller of `Thread.start()` when starting. Otherwise, threads will start with an empty context. If unset, the value of this option defaults to `1` on free-threaded builds and to `0` otherwise. See also `PYTHON_THREAD_INHERIT_CONTEXT`.

    Added in version 3.14.

  - `-X context_aware_warnings=0,1` causes the `warnings.catch_warnings` context manager to use a `ContextVar` to store warnings filter state. If unset, the value of this option defaults to `1` on free-threaded builds and to `0` otherwise. See also `PYTHON_CONTEXT_AWARE_WARNINGS`.

    Added in version 3.14.

  - `-X pathconfig_warnings=0,1` if true (`1`) then The initialization of the sys.path module search path is allowed to log warnings into stderr. If false (`0`) suppress these warnings. Set to true by default. See also `PYTHON_PATHCONFIG_WARNINGS`.

    Added in version 3.15.

  - `-X tlbc=0,1` enables (1, the default) or disables (0) thread-local bytecode in builds configured with `--disable-gil`. When disabled, this also disables the specializing interpreter. See also `PYTHON_TLBC`.

    Added in version 3.14.

  - `-X lazy_imports=all,normal` controls lazy import behavior. `all` makes all imports lazy by default, and `normal` (the default) respects the `lazy` keyword in source code. See also `PYTHON_LAZY_IMPORTS`.

    Added in version 3.15.

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

  Added in version 3.2.

  Змінено в версії 3.9: Removed the `-X showalloccount` option.

  Змінено в версії 3.10: Removed the `-X oldparser` option.

Removed in version 3.14: `-J` is no longer reserved for use by Jython, and now has no special meaning.

### 1.1.4. Controlling color

The Python interpreter is configured by default to use colors to highlight output in certain situations such as when displaying tracebacks. This behavior can be controlled by setting different environment variables.

Setting the environment variable `TERM` to `dumb` will disable color.

If the `FORCE_COLOR` environment variable is set, then color will be enabled regardless of the value of TERM. This is useful on CI systems which aren’t terminals but can still display ANSI escape sequences.

If the `NO_COLOR` environment variable is set, Python will disable all color in the output. This takes precedence over `FORCE_COLOR`.

All these environment variables are used also by other tools to control color output. To control the color output only in the Python interpreter, the `PYTHON_COLORS` environment variable can be used. This variable takes precedence over `NO_COLOR`, which in turn takes precedence over `FORCE_COLOR`.

## 1.2. Змінні середовища

Ці змінні середовища впливають на поведінку Python, вони обробляються перед перемикачами командного рядка, відмінними від -E або -I. Зазвичай параметри командного рядка перевизначають змінні середовища, де є конфлікт.

PYTHONHOME

  Змініть розташування стандартних бібліотек Python. За замовчуванням бібліотеки шукаються в `prefix/lib/pythonversion` і `exec_prefix/lib/pythonversion`, де `prefix` та `exec_prefix` є каталогами, що залежать від інсталяції, обидва за умовчанням мають `/usr/local`.

  Коли для `PYTHONHOME` встановлено один каталог, його значення замінює як `prefix`, так і `exec_prefix`. Щоб указати різні значення для них, установіть `PYTHONHOME` на `prefix:exec_prefix`.

PYTHONPATH

  Доповніть шлях пошуку за замовчуванням для файлів модулів. Формат такий самий, як і `PATH` оболонки: одне або більше імен шляхів до каталогу, розділених `os.pathsep` (наприклад, двокрапка в Unix або крапка з комою в Windows). Неіснуючі каталоги мовчки ігноруються.

  На додаток до звичайних каталогів, окремі записи `PYTHONPATH` можуть посилатися на zip-файли, що містять чисті модулі Python (у початковій або скомпільованій формі). Модулі розширення не можна імпортувати з zip-файлів.

  Шлях пошуку за умовчанням залежить від встановлення, але зазвичай починається з `prefix/lib/pythonversion` (див. `PYTHONHOME` вище). Він завжди додається до `PYTHONPATH`.

  Додатковий каталог буде вставлено в шлях пошуку перед `PYTHONPATH`, як описано вище в розділі Параметри інтерфейсу. Шляхом пошуку можна керувати з програми Python за допомогою змінної `sys.path`.

PYTHONSAFEPATH

  If this is set to a non-empty string, don’t prepend a potentially unsafe path to `sys.path`: see the `-P` option for details.

  Added in version 3.11.

PYTHONPLATLIBDIR

  Якщо для цього значення встановлено непорожній рядок, воно перевизначає значення `sys.platlibdir`.

  Added in version 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()` не робить нічого, крім негайного повернення.

  Added in version 3.7.

PYTHONDEBUG

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

  This environment variable requires a debug build of Python, otherwise it’s ignored.

PYTHONINSPECT

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

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

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

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

  Змінено в версії 3.13: Uses PyREPL if possible, in which case `PYTHONSTARTUP` is also executed. 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`.

  Added in version 3.8.

PYTHONHASHSEED

  Якщо ця змінна не встановлена або має значення `random`, для заповнення хешів об’єктів str і bytes використовується випадкове значення.

  Якщо `PYTHONHASHSEED` має ціле значення, воно використовується як фіксоване початкове значення для генерації hash() типів, охоплених рандомізацією хешу.

  Його мета полягає в тому, щоб дозволити повторюване хешування, наприклад, для самоперевірки для самого інтерпретатора, або дозволити кластеру процесів Python спільно використовувати хеш-значення.

  Ціле число має бути десятковим числом у діапазоні [0,4294967295]. Якщо вказати значення 0, рандомізацію хешу буде вимкнено.

  Added in version 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.

  Added in version 3.11.

PYTHONIOENCODING

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

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

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

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

PYTHONNOUSERSITE

  This is equivalent to the `-s` option. If this is set, Python won’t add the `user site-packages directory` to `sys.path`.

  Дивись також

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

PYTHONUSERBASE

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

  To disable the user site-packages, see `PYTHONNOUSERSITE` or the `-s` option.

  Дивись також

  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=all      # Same as PYTHONWARNINGS=always
      PYTHONWARNINGS=module   # Warn once per calling module
      PYTHONWARNINGS=once     # Warn once per Python process
      PYTHONWARNINGS=ignore   # Never warn

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

  Змінено в версії 3.15: Added regular expression support for message and module.

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.

  Added in version 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()` function for more information. This is equivalent to setting the `-X` `tracemalloc` option.

  Added in version 3.4.

PYTHONPROFILEIMPORTTIME

  If this environment variable is set to `1`, Python will show how long each import takes. If set to `2`, Python will include output for imported modules that have already been loaded. This is equivalent to setting the `-X` `importtime` option.

  Added in version 3.7.

  Змінено в версії 3.14: Added `PYTHONPROFILEIMPORTTIME=2` to also trace imports of loaded modules.

PYTHONASYNCIODEBUG

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

  Added in version 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.

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

  Встановити debug hooks:

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

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

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

  - `mimalloc_debug`: same as `mimalloc` but also install debug hooks.

  Примітка

  In the free-threaded build, the `malloc`, `malloc_debug`, `pymalloc`, and `pymalloc_debug` values are not supported. Only `default`, `debug`, `mimalloc`, and `mimalloc_debug` are accepted.

  Added in version 3.6.

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

PYTHONMALLOCSTATS

  If set to a non-empty string, Python will print statistics of the pymalloc memory allocator or the mimalloc memory allocator (whichever is in use) every time a new object arena is created, and on shutdown.

  This variable is ignored if the `PYTHONMALLOC` environment variable is used to force the `malloc()` allocator of the C library, or if Python is configured without both `pymalloc` and `mimalloc` support.

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

PYTHON_PYMALLOC_HUGEPAGES

  If set to a non-zero integer, enable huge page support for pymalloc arenas. Set to `0` or unset to disable. Python must be compiled with `--with-pymalloc-hugepages` for this variable to have any effect.

  When enabled, arena allocation uses `MAP_HUGETLB` (Linux) or `MEM_LARGE_PAGES` (Windows) with automatic fallback to regular pages if huge pages are not available.

  Попередження

  On Linux, if the huge-page pool is exhausted, page faults — including copy-on-write faults triggered by `os.fork()` — deliver `SIGBUS` and kill the process. Only enable this in environments where the huge-page pool is properly sized and fork-safety is not a concern.

  On Windows you need a special privilege. See the Windows documentation for large pages for details. Python will fail on startup if the required privilege SeLockMemoryPrivilege is not held by the user.

  Added in version 3.15.

PYTHONLEGACYWINDOWSFSENCODING

  Якщо встановлено непорожній рядок, режим filesystem encoding and error handler за замовчуванням повернеться до своїх значень „mbcs“ і „replace“, які були раніше 3.6, відповідно. В іншому випадку використовуються нові значення за замовчуванням «utf-8» і «surrogatepass».

  Availability: Windows.

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

PYTHONLEGACYWINDOWSSTDIO

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

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

  Availability: Windows.

  Added in version 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: Unix.

  Added in version 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. This is equivalent to setting the `-X` `dev` option.

  Added in version 3.7.

PYTHONUTF8

  Якщо встановлено значення `1`, увімкніть режим Python UTF-8.

  Якщо встановлено значення `0`, вимкніть режим Python UTF-8.

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

  Added in version 3.7.

PYTHONWARNDEFAULTENCODING

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

  Дивіться Увімкніть EncodingWarning для деталей.

  Added in version 3.10.

PYTHONNODEBUGRANGES

  If this variable is set, it disables the inclusion of the tables mapping extra location information (end line, start column offset and end column offset) to every instruction in code objects. This is useful when smaller code objects and pyc files are desired as well as suppressing the extra visual location indicators when the interpreter displays tracebacks.

  Added in version 3.11.

PYTHONPERFSUPPORT

  If this variable is set to a nonzero value, it enables support for the Linux `perf` profiler so Python calls can be detected by it.

  If set to `0`, disable Linux `perf` profiler support.

  See also the `-X perf` command-line option and Python support for the perf map compatible profilers.

  Added in version 3.12.

PYTHON_PERF_JIT_SUPPORT

  If this variable is set to a nonzero value, it enables support for the Linux `perf` profiler so Python calls can be detected by it using DWARF information.

  If set to `0`, disable Linux `perf` profiler support.

  See also the `-X perf_jit` command-line option and Python support for the perf map compatible profilers.

  Added in version 3.13.

PYTHON_DISABLE_REMOTE_DEBUG

  If this variable is set to a non-empty string, it disables the remote debugging feature described in PEP 768. This includes both the functionality to schedule code for execution in another process and the functionality to receive code for execution in the current process.

  See also the `-X disable_remote_debug` command-line option.

  Added in version 3.14.

PYTHON_CPU_COUNT

  If this variable is set to a positive integer, it overrides the return values of `os.cpu_count()` and `os.process_cpu_count()`.

  See also the `-X cpu_count` command-line option.

  Added in version 3.13.

PYTHON_FROZEN_MODULES

  If this variable is set to `on` or `off`, it determines whether or not frozen modules are ignored by the import machinery. A value of `on` means they get imported and `off` means they are ignored. The default is `on` for non-debug builds (the normal case) and `off` for debug builds. Note that the `importlib_bootstrap` and `importlib_bootstrap_external` frozen modules are always used, even if this flag is set to `off`.

  See also the `-X frozen_modules` command-line option.

  Added in version 3.13.

PYTHON_COLORS

  If this variable is set to `1`, the interpreter will colorize various kinds of output. Setting it to `0` deactivates this behavior. See also Controlling color.

  Added in version 3.13.

PYTHON_BASIC_REPL

  If this variable is set to any value, the interpreter will not attempt to load the Python-based REPL that requires `readline`, and will instead use the traditional parser-based REPL.

  Added in version 3.13.

PYTHON_BASIC_COMPLETER

  If this variable is set to any value, PyREPL will use `rlcompleter` to implement tab completion, instead of the default one which uses colors.

  Added in version 3.15.

PYTHON_HISTORY

  This environment variable can be used to set the location of a `.python_history` file (by default, it is `.python_history` in the user’s home directory).

  Added in version 3.13.

PYTHON_GIL

  If this variable is set to `1`, the global interpreter lock (GIL) will be forced on. Setting it to `0` forces the GIL off (needs Python configured with the `--disable-gil` build option).

  See also the `-X gil` command-line option, which takes precedence over this variable, and Free-threaded CPython.

  Added in version 3.13.

PYTHON_THREAD_INHERIT_CONTEXT

  If this variable is set to `1` then `Thread` will, by default, use a copy of context of the caller of `Thread.start()` when starting. Otherwise, new threads will start with an empty context. If unset, this variable defaults to `1` on free-threaded builds and to `0` otherwise. See also `-X thread_inherit_context`.

  Added in version 3.14.

PYTHON_CONTEXT_AWARE_WARNINGS

  If set to `1` then the `warnings.catch_warnings` context manager will use a `ContextVar` to store warnings filter state. If unset, this variable defaults to `1` on free-threaded builds and to `0` otherwise. See `-X context_aware_warnings`.

  Added in version 3.14.

PYTHON_PATHCONFIG_WARNINGS

  If true (`1`) then The initialization of the sys.path module search path is allowed to log warnings into stderr. If false (`0`) suppress these warnings. Set to true by default. See also `-X pathconfig_warnings`.

  Added in version 3.15.

PYTHON_JIT

  On builds where experimental just-in-time compilation is available, this variable can force the JIT to be disabled (`0`) or enabled (`1`) at interpreter startup.

  Added in version 3.13.

PYTHON_TLBC

  If set to `1` enables thread-local bytecode. If set to `0` thread-local bytecode and the specializing interpreter are disabled. Only applies to builds configured with `--disable-gil`.

  See also the `-X tlbc` command-line option.

  Added in version 3.14.

PYTHON_LAZY_IMPORTS

  Controls lazy import behavior. Accepts two values: `all` makes all imports lazy by default, and `normal` (the default) respects the `lazy` keyword in source code.

  See also the `-X lazy_imports` command-line option.

  Added in version 3.15.

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

PYTHONDUMPREFS

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

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

PYTHONDUMPREFSFILE

  If set, Python will dump objects and reference counts still alive after shutting down the interpreter into a file under the path given as the value to this environment variable.

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

  Added in version 3.11.

PYTHON_PRESITE

  If this variable is set to a module, that module will be imported early in the interpreter lifecycle, before the `site` module is executed, and before the `__main__` module is created. Therefore, the imported module is not treated as `__main__`.

  This can be used to execute code early during Python initialization.

  To import a submodule, use `package.module` as the value, like in an import statement.

  See also the `-X presite` command-line option, which takes precedence over this variable.

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

  Змінено в версії 3.15: Accept also `module:func` entry point format.

  Added in version 3.13.