Содержание страницы
Командная строка и окружение¶Command line and environment
Интерпретатор CPython сканирует командную строку и окружение на предмет различных настроек.
Примечание
Схемы командной строки других реализаций могут отличаться. Смотрите Альтернативные реализации для получения дополнительных ресурсов.
Командная строка¶Command line
При запуске Python можно указать любые из этих опций:
python [-bdEiOsStuUvxX?] [-c command | -m module-name | script | - ] [args]
Наиболее распространённый вариант использования – это простой запуск скрипта:
python myscript.py
Опции интерфейса¶Interface options
Интерфейс интерпретатора напоминает интерфейс командной оболочки UNIX, но предоставляет дополнительные способы запуска:
- При вызове с стандартным вводом, подключённым к tty-устройству, он выводит приглашение для команд и выполняет их, пока не будет прочитан EOF (символ конца файла; на UNIX его можно ввести с помощью Ctrl-D, а на Windows – Ctrl-Z, Enter).
- При вызове с именем файла в качестве аргумента или с файлом в качестве стандартного ввода он читает и выполняет скрипт из этого файла.
- При вызове с именем каталога в качестве аргумента он читает и выполняет соответствующий скрипт из этого каталога.
- При вызове с -c command интерпретатор выполняет инструкции Python, указанные в command. Эта command может содержать несколько инструкций, разделённых символами новой строки. Начальные пробелы в инструкциях Python имеют значение!
- При вызове с -m module-name интерпретатор находит указанный модуль по пути Python и выполняет его как скрипт.
В неинтерактивном режиме весь ввод анализируется до его выполнения.
Опция интерфейса завершает список опций, обрабатываемых интерпретатором; все последующие аргументы попадают в sys.argv – обратите внимание, что первый элемент с индексом ноль (sys.argv[0]) – это строка, отражающая источник программы.
- -c <command>¶
Выполняет код Python из command. command может состоять из одного или нескольких операторов, разделённых переводами строк, с учётом ведущих пробелов, как в обычном коде модуля.
Если указана эта опция, первым элементом sys.argv будет "-c", а текущий каталог будет добавлен в начало sys.path (что позволит импортировать модули из этого каталога как модули верхнего уровня).
- -m <module-name>¶
Ищет указанный модуль в sys.path и выполняет его содержимое как модуль __main__.
Поскольку аргументом является имя модуля, не следует указывать расширение файла (.py). Имя module-name должно быть допустимым именем модуля Python, хотя реализация может не всегда это контролировать (например, может позволить использовать имя, содержащее дефис).
Примечание
Эту опцию нельзя использовать со встроенными модулями и модулями расширения, написанными на C, поскольку у них нет файлов модулей Python. Однако её всё ещё можно использовать для прекомпилированных модулей, даже если исходный файл недоступен.
Если указана эта опция, первым элементом sys.argv будет полный путь к файлу модуля. Как и в случае с опцией -c, текущий каталог будет добавлен в начало sys.path.
Многие модули стандартной библиотеки содержат код, который вызывается при их выполнении как скрипта. Примером может служить модуль timeit:
python -mtimeit -s 'setup here' 'benchmarked code here' python -mtimeit -h # for details
См. также
runpy.run_module() Фактическая реализация этой возможности.
PEP 338 – Выполнение модулей как сценариев
- -
Читает команды из стандартного ввода (sys.stdin). Если стандартный ввод – терминал, подразумевается опция -i.
Если указана эта опция, первым элементом sys.argv будет "-", а текущий каталог будет добавлен в начало sys.path.
- <script>
Выполняет код Python, содержащийся в script, который должен быть путём в файловой системе (абсолютным или относительным) и ссылаться на файл Python, каталог с файлом __main__.py или zip-файл с файлом __main__.py.
Если указана эта опция, первым элементом sys.argv будет имя скрипта, указанное в командной строке.
Если имя скрипта напрямую ссылается на файл Python, каталог, содержащий этот файл, добавляется в начало sys.path, и файл выполняется как модуль __main__.
Если имя скрипта ссылается на каталог или zip-файл, имя скрипта добавляется в начало sys.path, а файл __main__.py из этого каталога выполняется как модуль __main__.
Если не указана опция интерфейса, подразумевается -i, sys.argv[0] является пустой строкой (""), а текущий каталог будет добавлен в начало sys.path.
См. также
Общие опции¶Generic options
Разные опции¶Miscellaneous options
- -b¶
- Выдаёт предупреждение при сравнении str и bytes. Выдаёт ошибку, если опция указана дважды (-bb).
- -B¶
- Если указано, Python не будет пытаться записать файлы .pyc или .pyo при импорте исходных модулей. См. также PYTHONDONTWRITEBYTECODE.
- -d¶
- Включает вывод отладки парсера (только для волшебников, зависит от параметров компиляции). См. также PYTHONDEBUG.
- -E¶
- Игнорирует все переменные окружения PYTHON*, например PYTHONPATH и PYTHONHOME, которые могут быть установлены.
- -i¶
Если скрипт передан в качестве первого аргумента или используется опция -c, после выполнения скрипта или команды переходит в интерактивный режим, даже если sys.stdin не является терминалом. Файл PYTHONSTARTUP не читается.
Это может быть полезно для просмотра глобальных переменных или трассировки стека, когда скрипт вызывает исключение. См. также PYTHONINSPECT.
- -O¶
- Включает базовые оптимизации. Это изменяет расширение файлов для скомпилированных (байткод) файлов с .pyc на .pyo. См. также PYTHONOPTIMIZE.
- -s¶
Не добавлять пользовательский каталог site в sys.path
См. также
PEP 370 – Каталог site-packages для каждого пользователя
- -u¶
Принудительно делает stdin, stdout и stderr полностью небуферизованными. В системах, где это имеет значение, также переводит stdin, stdout и stderr в двоичный режим.
Обратите внимание, что существует внутренняя буферизация в file.readlines() и Файловые объекты (for line in sys.stdin), на которую эта опция не влияет. Чтобы обойти это, используйте file.readline() внутри цикла while 1:.
См. также PYTHONUNBUFFERED.
- -v¶
- Выводит сообщение каждый раз, когда модуль инициализируется, показывая место (имя файла или встроенный модуль), из которого он загружается. При двойном указании (-vv) выводит сообщение для каждого файла, проверяемого при поиске модуля. Также предоставляет информацию об очистке модулей при завершении. См. также PYTHONVERBOSE.
- -W arg¶
Управление предупреждениями. Механизм предупреждений Python по умолчанию выводит сообщения предупреждений в sys.stderr. Типичное сообщение предупреждения имеет следующую форму:
file:line: category: message
По умолчанию каждое предупреждение выводится один раз для каждой строки исходного кода, в которой оно возникает. Этот параметр управляет частотой вывода предупреждений.
Может быть указано несколько опций -W; если предупреждение соответствует более чем одной опции, выполняется действие для последней подходящей опции. Недействительные опции -W игнорируются (хотя сообщение предупреждения о недействительных опциях выводится при первом предупреждении).
Предупреждения также можно контролировать из программы Python с помощью модуля warnings.
Простейшая форма аргумента – одна из следующих строк действий (или\nуникальное сокращение):
- игнорировать
- Игнорировать все предупреждения.
- по умолчанию
- Явно запросить поведение по умолчанию (вывод каждого предупреждения один раз на\nстроку исходного кода).
- все
- Выводить предупреждение при каждом его появлении (это может породить много сообщений, если\nпредупреждение вызывается многократно для одной и той же строки, например, внутри\nцикла).
- модуль
- Печатает каждое предупреждение только при первом его появлении в каждом модуле.
- однократно
- Выводить каждое предупреждение только при первом появлении в программе.
- ошибка
- Возбуждать исключение вместо вывода предупреждения.
Полная форма аргумента:
action:message:category:module:line
Здесь action работает как описано выше, но применяется только к сообщениям, соответствующим остальным полям. Пустые поля соответствуют всем значениям; завершающие пустые поля можно опустить. Поле message соответствует началу выводимого предупреждения; сравнение регистронезависимо. Поле category соответствует категории предупреждения. Оно должно быть именем класса; при сравнении проверяется, является ли фактическая категория предупреждения подклассом указанной категории. Должно быть указано полное имя класса. Поле module соответствует полному имени модуля (с точками); сравнение регистрозависимо. Поле line соответствует номеру строки, при этом ноль соответствует всем номерам строк и, таким образом, эквивалентен отсутствующему номеру.
- -x¶
Пропускает первую строку исходного файла, позволяя использовать не-Unix формы #!cmd. Это предназначено только для специфичного для DOS хака.
Предупреждение
Номера строк в сообщениях об ошибках будут сдвинуты на единицу!
Переменные окружения¶Environment variables
Эти переменные окружения влияют на поведение Python.
- 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.
- PYTHONSTARTUP¶
- Если указано имя читаемого файла, команды Python из этого файла выполняются до отображения первого приглашения в интерактивном режиме. Файл выполняется в том же пространстве имён, что и интерактивные команды, поэтому объекты, определённые или импортированные в нём, могут использоваться без квалификации в интерактивном сеансе. В этом файле также можно изменить приглашения sys.ps1 и sys.ps2.
- PYTHONY2K¶
- Если присвоено непустое значение, модуль time будет требовать, чтобы даты, указанные в виде строк, содержали 4-значные годы; в противном случае 2-значные годы преобразуются по правилам, описанным в документации модуля time.
- PYTHONOPTIMIZE¶
- Если установлена в непустую строку, это эквивалентно указанию опции -O. Если установлена в целое число, это эквивалентно указанию -O несколько раз.
- PYTHONDEBUG¶
- Если установлена в непустую строку, это эквивалентно указанию опции -d. Если установлена в целое число, это эквивалентно указанию -d несколько раз.
- PYTHONINSPECT¶
Если установлена в непустую строку, это эквивалентно указанию опции -i.
Эту переменную также можно изменить из кода Python с помощью os.environ, чтобы принудительно включить режим инспекции при завершении программы.
- PYTHONUNBUFFERED¶
- Если эта переменная установлена в непустую строку, это эквивалентно указанию опции -u.
- PYTHONVERBOSE¶
- Если эта переменная установлена в непустую строку, это эквивалентно указанию опции -v. Если установлена в целое число, это эквивалентно указанию -v несколько раз.
- PYTHONCASEOK¶
- Если эта переменная установлена, Python игнорирует регистр в операторах import. Это работает только в Windows.
- PYTHONDONTWRITEBYTECODE¶
- Если эта переменная установлена, Python не будет пытаться создавать файлы .pyc или .pyo при импорте исходных модулей.
- PYTHONIOENCODING¶
Переопределяет кодировку, используемую для stdin/stdout/stderr, в формате имя_кодировки:обработчик_ошибок. Часть :обработчик_ошибок необязательна и имеет тот же смысл, что и в str.encode().
Для stderr часть :errorhandler игнорируется; обработчик всегда будет 'backslashreplace'.
- PYTHONNOUSERSITE¶
Если эта переменная установлена, Python не будет добавлять каталог пользовательских сайтов в sys.path.
См. также
PEP 370 – Каталог site-packages для каждого пользователя
- PYTHONUSERBASE¶
Устанавливает базовый каталог для пользовательского каталога сайтов
См. также
PEP 370 – Каталог site-packages для каждого пользователя
- PYTHONEXECUTABLE¶
- Если эта переменная окружения установлена, sys.argv[0] будет установлено в её значение вместо значения, полученного через среду выполнения C. Работает только на Mac OS X.
Переменные отладочного режима¶Debug-mode variables
Установка этих переменных действует только в отладочной сборке Python, то есть если Python был собран с опцией сборки --with-pydebug.
- PYTHONTHREADDEBUG¶
- Если установлено, Python будет выводить отладочную информацию о потоках.
- PYTHONDUMPREFS¶
- Если установлено, Python будет выгружать объекты и счетчики ссылок, все еще живые после завершения работы интерпретатора.
- PYTHONMALLOCSTATS¶
- Если установлено, Python будет выводить статистику распределения памяти каждый раз при создании новой арены объектов, а также при завершении работы.