Материал содержит справочную информацию по всем имеющимся параметром командной строки Python, который включает подробное описание каждой из них:
Пример использования флагов/параметров командной строки интерпретатора Python:
# запустит скрипт `test.py` в # интерактивном режиме $ python3 -i test.py >>>
-?
-h
--help
:Выведет на печать краткое описание всех параметров командной строки.
--help-env
:Печатает краткое описание переменных среды, специфичных для Python, и выходит.
Новое в Python 3.11.
--help-xoptions
:Выводит описание опций -X
для конкретной реализации, и выходит.
Новое в Python 3.11.
--help-all
:Печатает полную информацию об использовании, и выходит.
Новое в Python 3.11.
-V
--version
:Выведет на печать номер версии Python и выйдет. Пример вывода может быть:
Python 3.8.0b2+
Укажите дважды -VV
, что бы вывести больше информации о сборке, например:
Python 3.8.0b2+ (3.8:0c076caaa8, Apr 20 2019, 21:55:00) [GCC 6.2.0 20161005]
-b
:Выдает предупреждение при сравнении bytes
/bytearray
с str
или bytes
с int
. Будет выдать ошибку, если опция указана дважды '-bb'
.
-B
:Если опция указана, то Python не будет пытаться записывать .pyc
файлы при импорте исходных модулей.
Данное поведение можно установить при помощи переменной окружения PYTHONDONTWRITEBYTECODE
. Если для этого параметра задана непустая строка, Python не будет пытаться записывать файлы .pyc
при импорте исходных модулей. Это эквивалентно указанию опции '-B'
.
Смотрите также sys.dont_write_bytecode
.
-d
:Включает выходные данные отладки анализатора (только для экспертов, в зависимости от параметров компиляции).
Данные отладки анализатора так же можно включить через переменную окружения PYTHONDEBUG
:
PYTHONDEBUG
задана непустая строка, это эквивалентно указанию опции -d
. -d
несколько раз.--check-hash-based-pycs default|always|never
:Позволяет управлять поведением проверки .pyc
файлов на основе хеша. Когда установлено значение default
, проверенные и не проверенные файлы кэша байт-кода на основе хеш-функции проверяются в соответствии с их семантикой по умолчанию. Когда установлено значение always
, все .pyc
файлы на основе хеша, независимо от того, отмечены они или нет, проверяются на соответствие их исходному файлу. Если установлено значение never
, .pyc
файлы на основе хеш-функции не проверяются по соответствующим исходным файлам.
Этот параметр не влияет на семантику .pyc
файлов на основе меток времени.
-E
:Игнорировать все переменные окружения PYTHON*
, например PYTHONPATH
и PYTHONHOME
, которые ранее были установлены.
-i
:Если скрипт сценария передается в качестве первого аргумента или используется опция '-c'
, входит в интерактивный режим после выполнения сценария или команды, даже если sys.stdin
не является терминалом. Переменная окружения PYTHONSTARTUP
не читается.
Это может быть полезно для проверки глобальных переменных или трассировки стека, когда скрипт вызывает исключение.
Данное поведение можно установить при помощи переменной окружения PYTHONINSPECT
:
PYTHONINSPECT
задана непустая строка, это эквивалентно указанию опции '-i'
.Переменная PYTHONINSPECT
также может быть изменена кодом Python с использованием os.environ
для принудительного режима проверки при завершении программы.
-I
:Запускает Python в изолированном режиме. Параметр '-I'
заменяет запуск скрипта с опциями -E
и -s
. В изолированном режиме sys.path
не содержит ни каталога скрипта, ни пользовательского каталога site-packages
. Все переменные окружения PYTHON*
также игнорируются.
Эти ограничения могут быть наложены, чтобы запретить пользователю вводить вредоносный код.
-O
:Удаляет операторы assert
и любой код, зависящий от значения __debug__
. Для скомпилированных файлов добавляет .opt-1
перед расширением .pyc
.
Поведение этого параметра можно установить при помощи переменной окружения PYTHONOPTIMIZE
.
PYTHONOPTIMIZE
задана непустая строка, это эквивалентно указанию опции '-O'
. '-O'
несколько раз.-00
:Делает то же, что и -O
, а также отбрасывает строки документации. Увеличивает имя файла для скомпилированных (байт-код) файлов, добавив .opt-2
перед расширением .pyc
.
-P
:Не добавляет потенциально опасный путь к sys.path
:
python -m
: не добавляет текущий рабочий каталог.python script.py
: не добавляет каталог скрипта script.py
в котором он находится. Если это символическая ссылка, то символические ссылки разрешены.python -c
и командные строки python (REPL): не добавляет пустую строку, которая означает текущий рабочий каталог.Дополнительно смотрите переменную среды PYTHONSAFEPATH
и параметры -E
и -I
(изолированные).
Новое в Python 3.11.
-q
:Не выводит сообщения об авторских правах и версиях даже в интерактивном режиме.
-R
:Включает рандомизацию хеша. Этот параметр действует только в том случае, если переменная окружения PYTHONHASHSEED
установлена в значение 0
, так как рандомизация хешей включена по умолчанию.
В предыдущих версиях Python, рандомизация хеша значения объектов str
и bytes
осуществлялась с добавлением непредсказуемого случайного значения. Хотя хеш и остается постоянным в отдельном процессе Python, то между повторными вызовами Python он вел себя непредсказуемо.
Рандомизация хеша предназначена для обеспечения защиты от отказа в обслуживании, вызванного тщательно выбранными входами, которые используют наихудшую производительность при сложном построении O(n^2)
.
PYTHONHASHSEED
позволяет установить фиксированное значение для секрета начального числа хеша:
PYTHONHASHSEED
не установлена или установлена в значение random
, случайное значение используется для заполнения хешей объектов str
и bytes
.PYTHONHASHSEED
установлен в целочисленное значение, он используется в качестве фиксированного начального числа для генерации hash()
типов, охватываемых рандомизацией хеша. Целое число должно быть десятичным числом в диапазоне [0,4294967295]. Указание значения 0
отключит рандомизацию хеша.Цель PYTHONHASHSEED
- разрешить повторяющееся хеширование, например, для самотестирования самого интерпретатора, или разрешить кластеру процессов Python совместно использовать значения хеш-функции.
-s
:Не добавляет пользовательский каталог site-packages
в переменную окружения sys.path
.
-S
:Отключает автоматический импорт модуля site
и зависящие от него манипуляции с sys.path
. Эта опция также отключает все стандартные специфичные каталоги и пути поиска, если даже модуль site
явно импортирован позже.
Вызовите site.main()
, что бы стандартные специфичные каталоги и пути поиска были подгружены.
-u
:Заставляет потоки sys.stdout
и sys.stderr
быть небуферизованными. Эта опция не влияет на поток sys.stdin
.
Такое поведение можно задать при помощи переменной окружения PYTHONUNBUFFERED
. Если для этого параметра задана непустая строка, это эквивалентно указанию параметра -u
.
-v
:Печатает сообщение при каждой инициализации модуля, показывая место - имя файла или встроенный модуль, из которого оно загружено. Если задано дважды -vv
, выведет сообщение для каждого файла, который проверяется при поиске модуля. Также предоставляет информацию по очистке модуля на выходе.
Такое поведение можно задать при помощи переменной окружения PYTHONVERBOSE
:
-v
.-v
несколько раз.-W arg
:Этот параметр контролирует частоту вывода предупреждений.. Механизм предупреждений Python по умолчанию выводит предупреждающие сообщения в sys.stderr
. Типичное предупреждающее сообщение имеет следующую форму:
file:line: category: message
По умолчанию каждое предупреждение печатается один раз для каждой строки источника, где оно происходит. Этот параметр контролирует частоту вывода предупреждений.
Можно указать несколько параметров '-W'
. Когда предупреждение соответствует нескольким параметрам, выполняется действие для последнего параметра соответствия. Недопустимые параметры '-W'
игнорируются. Однако при появлении первого предупреждения выводится предупреждение о недопустимых параметрах.
Предупреждения также можно контролировать с помощью переменной среды окружения PYTHONWARNINGS
и из программы Python с помощью модуля warnings
.
Самые простые настройки применяют определенное действие ко всем предупреждениям, генерируемым процессом, даже к тем, которые по умолчанию игнорируются:
-Wdefault # Предупреждать один раз за вызов -Werror # Преобразовать в исключения -Walways # Предупреждать каждый раз -Wmodule # Предупреждать один раз за вызов модуля -Wonce # Предупреждать один раз за процесс Python -Wignore # Никогда не предупреждать
Имена действий могут быть сокращены по желанию, например -Wi
, -Wd
, -Wa
, -We
и интерпретатор преобразует их в соответствующее имя.
Смотрите раздел "Фильтры предупреждений" для более подробной информации.
-x
:Пропускает первую строку исходного кода, разрешив использование не #Unix, а #!Cmd. Это предназначено только для использования в DOS.
-X
:Зарезервировано для различных вариантов реализации. В настоящее время определяет следующие возможные значения:
- Python 3.3: Добавлен параметр обработчика ошибок -X.
- Python 3.4: Добавлены параметры
-X showrefcount
и-X tracemalloc
.- Python 3.6: Добавлен параметр
-X showalloccount
.- Python 3.7: Добавлены параметры
-X importtime
,-X dev
и-X utf8
.- Python 3.8: Параметр
-X pycache_prefix
. Параметр-X dev
теперь регистрирует исключенияclose()
в деструктореio.IOBase
.- Python 3.9: Используя параметр
-X dev
, проверяет аргументы кодировки и ошибок при операциях кодирования и декодирования строк.- Python 3.9: Параметр
-X showalloccount
был удален.- Python 3.10: Добавлен параметр -X warndefaultencoding.
- Python 3.10: Параметр
-X oldparser
был удален.- Python 3.11: Добавлен параметр
-X no_debug_ranges
.- Python 3.11: Добавлена опция
-X Frozen_modules
.- Python 3.11: Добавлена опция
-X int_max_str_digits
.- Python 3.12: Добавлена опция
-X perf
.- Python 3.13: Добавлена опция
-X perf_jit
.- Python 3.13: Добавлена опция
-X cpu_count=n
.- Python 3.13: Добавлена опция
-X presite=package.module
.- Python 3.13: Добавлена опция
-X gil=0,1
.
- X faulthandler
для включения обработчика ошибок;- X oldparser
: включить традиционный анализатор LL
. Смотрим переменную PYTHONOLDPARSER
.- X showrefcount
для вывода общего счетчика ссылок и количества использованных блоков памяти после завершения программы или после каждого оператора в интерактивном интерпретаторе. Это работает только в отладочных сборках.- X tracemalloc
, для начала отслеживания выделения памяти Python с помощью модуля tracemalloc
. По умолчанию только самый последний кадр сохраняется в трассировке трассировки. Используйте `-X tracemalloc=NFRAME, чтобы начать трассировку с ограничением трассировки кадров NFRAME.- X importtime
, чтобы показать, сколько времени занимает каждый импорт. Он показывает имя модуля, совокупное время (включая вложенный импорт) и собственное время (исключая вложенный импорт). Обратите внимание, что его вывод может быть нарушен в многопоточном приложении. Типичное использование - python3 -X importtime -c 'import asyncio'
. Смотрим также переменную PYTHONPROFILEIMPORTTIME
.- X dev
: включить режим разработки Python, вводя дополнительные проверки времени выполнения, которые слишком дороги для включения по умолчанию.- X utf8
включает режим UTF-8
для интерфейсов операционной системы, заменяя режим с учетом локали по умолчанию. -X utf8=0
явно отключает режим UTF-8
, даже если в противном случае он активировался бы автоматически. Подробнее смотрим переменную PYTHONUTF8
.- X pycache_prefix=PATH
позволяет записывать файлы .pyc
в параллельное дерево с корнем в данном каталоге, а не в дерево кода. Смотрим также переменную PYTHONPYCACHEPREFIX
.- X warn_default_encoding
выдает предупреждение EncodingWarning
, когда для открытия файлов используется кодировка по умолчанию, зависящая от локали. Смотрим также переменную PYTHONWARNDEFAULTENCODING
.- X int_max_str_digits
настраивает ограничение длины преобразования целочисленной строки. Дополнительно смотрите PYTHONINTMAXSTRDIGITS
.- X no_debug_ranges
отключает включение таблиц, отображающих дополнительную информацию о местоположении (конечная строка, смещение начального столбца и смещение конечного столбца) для каждой инструкции в объектах кода Codeobject
. Это полезно, когда требуются меньшие объекты кода и файлы .pyc
, а также подавление дополнительных визуальных индикаторов местоположения, когда интерпретатор отображает трассировку. Дополнительно смотрите PYTHONNODEBUGRANGES
.- X frozen_modules
- определяет, игнорируются ли frozen
модули механизмом импорта. Значение on
означает, что они импортируются, а значение off
означает, что они игнорируются. По умолчанию включено, если это установленный Python (обычный случай). Если он находится в стадии разработки (запускается из дерева исходного кода), то значение по умолчанию отключено. Обратите внимание, что frozen
модули importlib_bootstrap
и importlib_bootstrap_external
используются всегда, даже если этот флаг отключен. Дополнительно смотрите PYTHON_FROZEN_MODULES
. - X perf
- включает поддержку профилировщика производительности Linux. Если эта опция предоставлена, то профилировщик производительности сможет сообщать о вызовах Python. Эта опция доступна только на некоторых платформах и ничего не даст, если она НЕ ПОДДЕРЖИВАЕТСЯ текущей системой. Значение по умолчанию — off
. Смотрите также PYTHONPERFSUPPORT
и материал "Поддержка Python Linux perf profiler".X perf_jit
включает поддержку профилировщика производительности Linux с поддержкой DWARF
. Если эта опция предоставлена, то профилировщик производительности сможет сообщать о вызовах Python, используя информацию DWARF
. Эта опция доступна только на некоторых платформах и ничего не даст, если она не поддерживается текущей системой. Значение по умолчанию — off
. Дополнительно смотрите PYTHON_PERF_JIT_SUPPORT
и поддержку профилировщика производительности Linux для Python.X cpu_count=n
переопределяет os.cpu_count()
, os.process_cpu_count()
(!добавлена в Python 3.13) и multiprocessing.cpu_count()
. n
должен быть больше или равен 1. Этот параметр может быть полезен пользователям, которым необходимо ограничить ресурсы ЦП контейнерной системы. Дополнительно смотрите PYTHON_CPU_COUNT
. Если n
установлено по умолчанию, то ничего не переопределяется.X presite=package.module
указывает модуль, который следует импортировать до выполнения модуля site
и до существования модуля __main__
. Следовательно, импортированный модуль не является __main__
. Эту функциональность можно использовать для раннего выполнения кода во время инициализации Python. Чтобы эта опция существовала, Python должен быть собран с опцией --with-pydebug
. Дополнительно смотрите PYTHON_PRESITE
.X gil=0|1
приводит к отключению или включению GIL соответственно. Доступно только в сборках, настроенных с помощью --disable-gil
. Дополнительно смотрите PYTHON_GIL
и Global Interpreter Lock (GIL) в Python (подраздел "CPython со свободным потоком").