Сообщить об ошибке.

Флаги/параметры командной строки Python.

Материал содержит справочную информацию по всем имеющимся параметром командной строки Python, который включает подробное описание каждой из них:

Пример использования флагов/параметров командной строки интерпретатора Python:

# запустит скрипт `test.py` в 
# интерактивном режиме
$ python3 -i test.py
>>>

Параметры командной строки Python.

-?
-h
--help
:

Выведет на печать краткое описание всех параметров командной строки.

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

Двойной параметр -OO также отказывается от строк документации и комментариев. Для скомпилированных файлов добавляет .opt-2 перед расширением .pyc

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

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

  • 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:

  • 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 был удален.