1. Командний рядок і середовище¶
Інтерпретатор CPython сканує командний рядок і середовище на наявність різних параметрів.
Деталі реалізації 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.
При виклику з аргументом імені файлу або з файлом як стандартним введенням він читає та виконує сценарій із цього файлу.
При виклику з аргументом назви каталогу він читає та виконує сценарій із відповідною назвою з цього каталогу.
При виклику за допомогою команди
-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 wheresys.path
contains neither the current directory nor the user’s site-packages directory. AllPYTHON*
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 wheresys.path
contains neither the script’s directory nor the user’s site-packages directory. AllPYTHON*
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.
1.1.3. Різні варіанти¶
- -b¶
Issue a warning when converting
bytes
orbytearray
tostr
without specifying encoding or comparingbytes
orbytearray
withstr
orbytes
withint
. Issue an error when the option is given twice (-bb
).
- -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
andPYTHONHOME
, that might be set.
- -i¶
Якщо сценарій передається як перший аргумент або використовується параметр
-c
, увійдіть в інтерактивний режим після виконання сценарію або команди, навіть якщоsys.stdin
не виглядає як термінал. ФайлPYTHONSTARTUP
не читається.Це може бути корисно для перевірки глобальних змінних або трасування стека, коли сценарій викликає виняткову ситуацію. Дивіться також
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. AllPYTHON*
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
andpython
(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¶
Увімкніть хеш-рандомізацію. Цей параметр діє, лише якщо для змінної середовища
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://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 описано вище, але застосовується лише до попереджень, які відповідають решті полів.
Поле повідомлення має відповідати всьому попереджувальному повідомленню; цей збіг не залежить від регістру.
Поле category відповідає категорії попередження (наприклад,
DeprecationWarning
). Це має бути назва класу; перевірка відповідності, чи є фактична категорія попередження повідомлення підкласом зазначеної категорії попередження.The module field matches the (fully qualified) module name; this match is case-sensitive.
Поле lineno відповідає номеру рядка, де нуль відповідає всім номерам рядків і, отже, еквівалентний пропущеному номеру рядка.
Можна надати кілька параметрів
-W
; коли попередження відповідає більш ніж одному параметру, виконується дія для останнього відповідного параметра. Недійсні параметри-W
ігноруються (проте, коли видається перше попередження, друкується попередження про недійсні параметри).Попередженнями також можна керувати за допомогою змінної середовища
PYTHONWARNINGS
і з програми Python за допомогою модуляwarnings
. Наприклад, функціюwarnings.filterwarnings()
можна використовувати для використання регулярного виразу в попередженні.Перегляньте Фільтр попереджень і Опис фільтрів попереджень для отримання додаткової інформації.
- -x¶
Пропустіть перший рядок джерела, дозволяючи використовувати не-Unix форми
#!cmd
. Це призначено лише для спеціального злому DOS.
- -X¶
Зарезервовано для різних варіантів реалізації. Наразі CPython визначає такі можливі значення:
-X faulthandler
to enablefaulthandler
. See alsoPYTHONFAULTHANDLER
.Added in version 3.3.
-X showrefcount
для виведення загальної кількості посилань і кількості використаних блоків пам’яті після завершення програми або після кожного оператора в інтерактивному інтерпретаторі. Це працює лише на debug builds.Added in version 3.4.
-X tracemalloc
to start tracing Python memory allocations using thetracemalloc
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. Seetracemalloc.start()
andPYTHONTRACEMALLOC
for more information.Added in version 3.4.
-X int_max_str_digits
configures the integer string conversion length limitation. See alsoPYTHONINTMAXSTRDIGITS
.Added in version 3.11.
-X importtime
, щоб показати, скільки часу займає кожен імпорт. Він показує назву модуля, сукупний час (включно з вкладеним імпортом) і власний час (за винятком вкладеного імпорту). Зверніть увагу, що його вихід може бути порушений у багатопотоковій програмі. Типовим використанням єpython3 -X importtime -c 'import asyncio'
. Дивіться такожPYTHONPROFILEIMPORTTIME
.Added in version 3.7.
-X dev
: enable Python Development Mode, introducing additional runtime checks that are too expensive to be enabled by default. See alsoPYTHONDEVMODE
.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 alsoPYTHONUTF8
.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 alsoPYTHONNODEBUGRANGES
.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».Added in version 3.11.
-X perf
enables support for the Linuxperf
profiler. When this option is provided, theperf
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 alsoPYTHONPERFSUPPORT
and Python support for the Linux perf profiler.Added in version 3.12.
Це також дозволяє передавати довільні значення та отримувати їх через словник
sys._xoptions
.Added in version 3.2.
Змінено в версії 3.9: Removed the
-X showalloccount
option.Змінено в версії 3.10: Removed the
-X oldparser
option.
1.1.4. Параметри, якими не варто користуватися¶
1.2. Змінні середовища¶
Ці змінні середовища впливають на поведінку Python, вони обробляються перед перемикачами командного рядка, відмінними від -E або -I. Зазвичай параметри командного рядка перевизначають змінні середовища, де є конфлікт.
- PYTHONHOME¶
Змініть розташування стандартних бібліотек Python. За замовчуванням бібліотеки шукаються в
prefix/lib/pythonversion
іexec_prefix/lib/pythonversion
, деprefix
таexec_prefix
є каталогами, що залежать від інсталяції, обидва за умовчанням мають/usr/local
.Коли для
PYTHONHOME
встановлено один каталог, його значення замінює якprefix
, так іexec_prefix
. Щоб указати різні значення для них, установітьPYTHONHOME
наprefix:exec_prefix
.
- PYTHONPATH¶
Доповніть шлях пошуку за замовчуванням для файлів модулів. Формат такий самий, як і
PATH
оболонки: одне або більше імен шляхів до каталогу, розділенихos.pathsep
(наприклад, двокрапка в Unix або крапка з комою в Windows). Неіснуючі каталоги мовчки ігноруються.На додаток до звичайних каталогів, окремі записи
PYTHONPATH
можуть посилатися на zip-файли, що містять чисті модулі Python (у початковій або скомпільованій формі). Модулі розширення не можна імпортувати з zip-файлів.Шлях пошуку за умовчанням залежить від встановлення, але зазвичай починається з
prefix/lib/pythonversion
(див.PYTHONHOME
вище). Він завжди додається доPYTHONPATH
.Додатковий каталог буде вставлено в шлях пошуку перед
PYTHONPATH
, як описано вище в розділі Параметри інтерфейсу. Шляхом пошуку можна керувати з програми Python за допомогою змінноїsys.path
.
- PYTHONSAFEPATH¶
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.
- 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¶
Якщо це встановлено, Python не додаватиме каталог
user site-packages
доsys.path
.Дивись також
PEP 370 – Каталог пакетів сайту для кожного користувача
- PYTHONUSERBASE¶
Defines the
user base directory
, which is used to compute the path of theuser site-packages directory
and installation paths forpython -m pip 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=all # Same as PYTHONWARNINGS=always 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 forSIGSEGV
,SIGFPE
,SIGABRT
,SIGBUS
andSIGILL
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 thetracemalloc.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 a non-empty string, Python will show how long each import takes. This is equivalent to setting the
-X
importtime
option.Added in version 3.7.
- PYTHONASYNCIODEBUG¶
Якщо для цієї змінної середовища встановлено непорожній рядок, увімкніть режим налагодження модуля
asyncio
.Added in version 3.4.
- PYTHONMALLOC¶
Налаштуйте розподільники пам’яті Python та/або встановіть хуки налагодження.
Встановіть сімейство розподільників пам’яті, яке використовує Python:
за замовчуванням
: використовуйте розподільники пам’яті за замовчуванням.malloc
: use themalloc()
function of the C library for all domains (PYMEM_DOMAIN_RAW
,PYMEM_DOMAIN_MEM
,PYMEM_DOMAIN_OBJ
).pymalloc
: use the pymalloc allocator forPYMEM_DOMAIN_MEM
andPYMEM_DOMAIN_OBJ
domains and use themalloc()
function for thePYMEM_DOMAIN_RAW
domain.
Встановити debug hooks:
debug
: установіть хуки налагодження поверх розподілювачів пам’яті за замовчуванням.malloc_debug
: те саме, щоmalloc
, але також встановлює хуки налагодження.pymalloc_debug
: те саме, щоpymalloc
, але також встановлює хуки налагодження.
Added in version 3.6.
Змінено в версії 3.7: Додано розподільник
"default"
.
- PYTHONMALLOCSTATS¶
Якщо встановлено непорожній рядок, Python друкуватиме статистику розподільника пам’яті pymalloc кожного разу, коли створюється нова арена об’єкта pymalloc, а також після завершення роботи.
Ця змінна ігнорується, якщо змінна середовища
PYTHONMALLOC
використовується для примусового виділенняmalloc()
бібліотеки C, або якщо Python налаштовано без підтримкиpymalloc
.Змінено в версії 3.6: Цю змінну тепер також можна використовувати на Python, скомпільованому в режимі випуску. Тепер це не має ефекту, якщо встановлено порожній рядок.
- PYTHONLEGACYWINDOWSFSENCODING¶
Якщо встановлено непорожній рядок, режим filesystem encoding and error handler за замовчуванням повернеться до своїх значень „mbcs“ і „replace“, які були раніше 3.6, відповідно. В іншому випадку використовуються нові значення за замовчуванням «utf-8» і «surrogatepass».
This may also be enabled at runtime with
sys._enablelegacywindowsfsencoding()
.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. Це гарантує, що окрім перегляду як самим інтерпретатором, так і іншими компонентами, що працюють у тому самому процесі (таких як бібліотека GNUreadline
), оновлене налаштування також видно у підпроцесах (незалежно від того, чи не ці процеси запускають інтерпретатор 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 Linuxperf
profiler support.See also the
-X perf
command-line option and Python support for the Linux perf profiler.Added in version 3.12.
1.2.1. Змінні режиму налагодження¶
- PYTHONDUMPREFS¶
Якщо встановлено, Python виводитиме об’єкти та лічильники посилань, які ще живі після вимкнення інтерпретатора.
Need Python configured with the
--with-trace-refs
build option.
- PYTHONDUMPREFSFILE=FILENAME¶
If set, Python will dump objects and reference counts still alive after shutting down the interpreter into a file called FILENAME.
Need Python configured with the
--with-trace-refs
build option.Added in version 3.11.