# 1. コマンドラインと環境

CPython インタプリタはコマンドラインと環境を読み取って様々な設定を行ないます。

他の実装のコマンドラインスキームは CPython とは異なります。さらなる情報は 別のPythonの実装 を参照してください。

## 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` に渡ります。 -- ただし、添字 0 の先頭要素(`sys.argv[0]`) はプログラムのソース自体を示す文字列です。

-c <command>

  command 内の Python コードを実行します。 command は改行によって区切られた1行以上の文です。通常のモジュールのコードと同じく、行頭の空白文字は意味を持ちます。

  このオプションが指定された場合、 `sys.argv` の最初の要素は `"-c"` になり、カレントディレクトリが `sys.path` の先頭に追加されます (そのディレクトリにあるモジュールをトップレベルモジュールとして import 出来るようになります)。

  引数 `command` を指定して 監査イベント `cpython.run_command` を送出します。

  バージョン 3.14 で変更: command is automatically dedented before execution.

-m <module-name>

  `sys.path` から指定されたモジュール名のモジュールを探し、その内容を `__main__` モジュールとして実行します。

  引数は module 名なので、拡張子 (`.py`) を含めてはいけません。モジュール名は有効な Python の絶対モジュール名 (absolute module name) であるべきですが、実装がそれを強制しているとは限りません (例えば、ハイフンを名前に含める事を許可するかもしれません)。

  パッケージ名 (名前空間パッケージも含む) でも構いません。通常のモジュールの代わりにパッケージ名が与えられた場合、インタプリタは `<pkg>.__main__` を 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

  引数 `module-name` を指定して 監査イベント `cpython.run_module` を送出します。

  参考

  `runpy.run_module()`

    Python コードで直接使える等価な機能

  PEP 338 - モジュールをスクリプトとして実行する

  バージョン 3.1 で変更: `__main__` サブモジュールを実行するパッケージ名が提供されました。

  バージョン 3.4 で変更: 名前空間パッケージもサポートされました

-

  標準入力 (`sys.stdin`) からコマンドを読み込みます。標準入力がターミナルだった場合、暗黙的に `-i` オプションが指定されます。

  このオプションが指定された場合、 `sys.argv` の最初の要素は `"-"` で、カレントディレクトリが `sys.path` の先頭に追加されます。

  引数無しで 監査イベント `cpython.run_stdin` を送出します。

<script>

  script 内の Python コードを実行します。 script は、Python ファイル、 `__main__.py` ファイルがあるディレクトリ、 `__main__.py` ファイルがある zip ファイルのいずれかの、ファイルシステム上の (絶対または相対) パスでなければなりません。

  このオプションが指定された場合、 `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.

  引数 `filename` を指定して 監査イベント `cpython.run_file` を送出します。

  参考

  `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+

  2つ指定すると、次のようにより多くのビルドの情報を表示します:

      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

  Control the validation behavior of hash-based `.pyc` files. See キャッシュされたバイトコードの無効化. When set to `default`, checked and unchecked hash-based bytecode cache files are validated according to their default semantics. When set to `always`, all hash-based `.pyc` files, whether checked or unchecked, are validated against their corresponding source file. When set to `never`, hash-based `.pyc` files are not validated against their corresponding source files.

  The semantics of timestamp-based `.pyc` files are unaffected by this option.

-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

  Python を隔離モードで実行します。`-E`、`-P`、および `-s` オプションも暗黙的に指定されます。

  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

  Remove assert statements and any code conditional on the value of `__debug__`. Augment the filename for compiled (bytecode) files by adding `.opt-1` before the `.pyc` extension (see PEP 488). See also `PYTHONOPTIMIZE`.

  バージョン 3.5 で変更: PEP 488 に従って `.pyc` ファイル名を変更します。

-OO

  Do `-O` and also discard docstrings. Augment the filename for compiled (bytecode) files by adding `.opt-2` before the `.pyc` extension (see PEP 488).

  バージョン 3.5 で変更: PEP 488 に従って `.pyc` ファイル名を変更します。

-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

  インタラクティブモードでも copyright とバージョンのメッセージを表示しません。

  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

  `ユーザのサイトパッケージのディレクトリ` を `sys.path` に追加しません。

  See also `PYTHONNOUSERSITE`.

  参考

  PEP 370 -- ユーザごとの `site-packages` ディレクトリ

-S

  `site` モジュールの import と、そのモジュールが行なっていた site ごとの `sys.path` への操作を無効にします。後で `site` を明示的に import しても、これらの操作は実行されません (実行したい場合は、 `site.main()` を呼び出してください)。

-u

  Force the stdout and stderr streams to be unbuffered. This option has no effect on the stdin stream.

  `PYTHONUNBUFFERED` も参照してください。

  バージョン 3.7 で変更: The text layer of the stdout and stderr streams now is unbuffered.

-v

  モジュールが初期化されるたびにメッセージを出力し、それがどこ (ファイル名やビルトインモジュール) からロードされたのかを表示します。 二回与えられた場合 (`-vv`) は、モジュールを検索するときにチェックしたファイルごとにメッセージを出力します。また、終了時のモジュールクリーンアップに関する情報も提供します。

  バージョン 3.10 で変更: The `site` module reports the site-specific paths and `.pth` files being processed.

  `PYTHONVERBOSE` も参照してください。

-W arg

  警告制御。 Python の警告機構はデフォルトでは警告メッセージを `sys.stderr` に表示します。

  The simplest settings apply a particular action unconditionally to all warnings emitted by a process (even those that are otherwise ignored by default):

      -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

  The action names can be abbreviated as desired and the interpreter will resolve them to the appropriate action name. For example, `-Wi` is the same as `-Wignore`.

  引数の完全形は次のようになります:

      action:message:category:module:lineno

  Empty fields match all values; trailing empty fields may be omitted. For example `-W ignore::DeprecationWarning` ignores all DeprecationWarning warnings.

  The action field is as explained above but only applies to warnings that match the remaining fields.

  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.

  The category field matches the warning category (ex: `DeprecationWarning`). This must be a class name; the match test whether the actual warning category of the message is a subclass of the specified warning category.

  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.

  The lineno field matches the line number, where zero matches all line numbers and is thus equivalent to an omitted line number.

  複数の `-W` オプションを指定することができます。警告が1つ以上のオプションとマッチしたときは、最後にマッチしたオプションのアクションが有効になります。不正な `-W` オプションは無視されます (最初の警告が発生したときに、不正なオプションに対する警告メッセージが表示されます)。

  Warnings can also be controlled using the `PYTHONWARNINGS` environment variable and from within a Python program using the `warnings` module. For example, the `warnings.filterwarnings()` function can be used to use a regular expression on the warning message.

  詳しくは 警告フィルタ と Describing Warning Filters を参照してください。

  バージョン 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` to output the total reference count and number of used memory blocks when the program finishes or after each statement in the interactive interpreter. This only works on 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` enables writing `.pyc` files to a parallel tree rooted at the given directory instead of to the code tree. See also `PYTHONPYCACHEPREFIX`.

    Added in version 3.8.

  - `-X warn_default_encoding` issues a `EncodingWarning` when the locale-specific default encoding is used for opening files. See also `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 フリースレッドの 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 sys.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. 色の制御

デフォルトでは、 Python インタープリターは、トレースバックの表示などの特定の状況で、出力を色でハイライトするように構成されています。この振る舞いは、異なる環境変数を設定することで制御できます。

環境変数 `TERM` を `dumb` に設定することで、色付けを無効にできます。

`FORCE_COLOR` 環境変数が設定されている場合、 TERM の値にかかわらず、色付けは有効になります。これは、ターミナルではないが ANSI エスケープシーケンスを表示できる CI システムで有効です。

`NO_COLOR` 環境変数が設定されている場合、 Python は出力のすべての色を無効にします。これは `FORCE_COLOR` よりも優先されます。

これらのすべての環境変数は、色の出力の制御のために他のツールにも使用されます。 Python インタープリターでのみ色の出力を制御するには、 `PYTHON_COLORS` 環境変数を使用できます。この変数は、 `FORCE_COLOR` よりも優先される `NO_COLOR` よりも、さらに優先されます。

## 1.2. 環境変数

以下の環境変数は Python の挙動に影響します。環境変数は -E や -I 以外のコマンドラインスイッチの前に処理されます。衝突したときにコマンドラインスイッチが環境変数をオーバーライドするのは慣例です。

PYTHONHOME

  標準 Python ライブラリの場所を変更します。デフォルトでは、ライブラリは `prefix/lib/pythonversion` と `exec_prefix/lib/pythonversion` から検索されます。ここで、 `prefix` と `exec_prefix` はインストール依存のディレクトリで、両方共デフォルトでは `/usr/local` です。

  `PYTHONHOME` が1つのディレクトリに設定されている場合、その値は `prefix` と `exec_prefix` の両方を置き換えます。それらに別々の値を指定したい場合は、 `PYTHONHOME` を `prefix:exec_prefix` のように指定します。

PYTHONPATH

  モジュールファイルのデフォルトの検索パスを追加します。この環境変数のフォーマットはシェルの `PATH` と同じで、 `os.pathsep` (Unix ならコロン、 Windows ならセミコロン) で区切られた1つ以上のディレクトリパスです。存在しないディレクトリは警告なしに無視されます。

  通常のディレクトリに加えて、 `PYTHONPATH` のエントリはピュアPython モジュール(ソース形式でもコンパイルされた形式でも) を含む zip ファイルを参照することもできます。拡張モジュールは zip ファイルの中から import することはできません。

  デフォルトの検索パスはインストール依存ですが、通常は `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

  If this is set to a non-empty string, it overrides the `sys.platlibdir` value.

  Added in version 3.9.

PYTHONSTARTUP

  この変数が読み込み可能なファイル名の場合、対話モードで最初のプロンプトが表示される前にそのファイルの Python コマンドが実行されます。 ファイル内で定義されているオブジェクトやインポートされたオブジェクトを対話セッションで修飾せずに使用するために、ファイルは対話的なコマンドと同じ名前空間で実行されます。 このファイルの中で、プロンプト `sys.ps1` や `sys.ps2`、ならびにフック `sys.__interactivehook__` も変更できます。

  Raises an auditing event `cpython.run_startup` with the filename as the argument when called on startup.

PYTHONOPTIMIZE

  この変数に空でない文字列を設定するのは `-O` オプションを指定するのと等価です。整数を設定した場合、 `-O` を複数回指定したのと同じになります。

PYTHONBREAKPOINT

  If this is set, it names a callable using dotted-path notation. The module containing the callable will be imported and then the callable will be run by the default implementation of `sys.breakpointhook()` which itself is called by built-in `breakpoint()`. If not set, or set to the empty string, it is equivalent to the value "pdb.set_trace". Setting this to the string "0" causes the default implementation of `sys.breakpointhook()` to do nothing but return immediately.

  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

  If this is set, Python will write `.pyc` files in a mirror directory tree at this path, instead of in `__pycache__` directories within the source tree. This is equivalent to specifying the `-X` `pycache_prefix=PATH` option.

  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

  この変数がインタープリタ実行前に設定されていた場合、`encodingname:errorhandler` という文法で標準入力/標準出力/標準エラー出力のエンコードを上書きします。 `encodingname` と `:errorhandler` の部分はどちらも任意で、`str.encode()` と同じ意味を持ちます。

  標準エラー出力の場合、`:errorhandler` の部分は無視されます; ハンドラは常に `'backslashreplace'` です。

  バージョン 3.4 で変更: `encodingname` の部分が任意になりました。

  バージョン 3.6 で変更: On Windows, the encoding specified by this variable is ignored for interactive console buffers unless `PYTHONLEGACYWINDOWSSTDIO` is also specified. Files and pipes redirected through the standard streams are not affected.

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 -- ユーザごとの `site-packages` ディレクトリ

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 -- ユーザごとの `site-packages` ディレクトリ

PYTHONEXECUTABLE

  この環境変数が設定された場合、 `sys.argv[0]` に、C ランタイムから取得した値の代わりにこの環境変数の値が設定されます。macOS でのみ動作します。

PYTHONWARNINGS

  This is equivalent to the `-W` option. If set to a comma separated string, it is equivalent to specifying `-W` multiple times, with filters later in the list taking precedence over those earlier in the list.

  The simplest settings apply a particular action unconditionally to all warnings emitted by a process (even those that are otherwise ignored by default):

      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

  詳しくは 警告フィルタ と Describing Warning Filters を参照してください。

  バージョン 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

  Set the Python memory allocators and/or install debug hooks.

  Set the family of memory allocators used by Python:

  - `default`: use the default memory allocators.

  - `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.

  Install debug hooks:

  - `debug`: install debug hooks on top of the default memory allocators.

  - `malloc_debug`: same as `malloc` but also install debug hooks.

  - `pymalloc_debug`: same as `pymalloc` but also install debug hooks.

  - `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 で変更: Added the `"default"` allocator.

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 で変更: This variable can now also be used on Python compiled in release mode. It now has no effect if set to an empty string.

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

  If set to a non-empty string, the default filesystem encoding and error handler mode will revert to their pre-3.6 values of 'mbcs' and 'replace', respectively. Otherwise, the new defaults 'utf-8' and 'surrogatepass' are used.

  Availability: Windows.

  Added in version 3.6: より詳しくは PEP 529 を参照してください。

PYTHONLEGACYWINDOWSSTDIO

  If set to a non-empty string, does not use the new console reader and writer. This means that Unicode characters will be encoded according to the active console code page, rather than using utf-8.

  This variable is ignored if the standard streams are redirected (to files or pipes) rather than referring to console buffers.

  Availability: Windows.

  Added in version 3.6.

PYTHONCOERCECLOCALE

  If set to the value `0`, causes the main Python command line application to skip coercing the legacy ASCII-based C and POSIX locales to a more capable UTF-8 based alternative.

  If this variable is not set (or is set to a value other than `0`), the `LC_ALL` locale override environment variable is also not set, and the current locale reported for the `LC_CTYPE` category is either the default `C` locale, or else the explicitly ASCII-based `POSIX` locale, then the Python CLI will attempt to configure the following locales for the `LC_CTYPE` category in the order listed before loading the interpreter runtime:

  - `C.UTF-8`

  - `C.utf8`

  - `UTF-8`

  If setting one of these locale categories succeeds, then the `LC_CTYPE` environment variable will also be set accordingly in the current process environment before the Python runtime is initialized. This ensures that in addition to being seen by both the interpreter itself and other locale-aware components running in the same process (such as the GNU `readline` library), the updated setting is also seen in subprocesses (regardless of whether or not those processes are running a Python interpreter), as well as in operations that query the environment rather than the current C locale (such as Python's own `locale.getdefaultlocale()`).

  Configuring one of these locales (either explicitly or via the above implicit locale coercion) automatically enables the `surrogateescape` error handler for `sys.stdin` and `sys.stdout` (`sys.stderr` continues to use `backslashreplace` as it does in any other locale). This stream handling behavior can be overridden using `PYTHONIOENCODING` as usual.

  For debugging purposes, setting `PYTHONCOERCECLOCALE=warn` will cause Python to emit warning messages on `stderr` if either the locale coercion activates, or else if a locale that would have triggered coercion is still active when the Python runtime is initialized.

  Also note that even when locale coercion is disabled, or when it fails to find a suitable target locale, `PYTHONUTF8` will still activate by default in legacy ASCII-based locales. Both features must be disabled in order to force the interpreter to use `ASCII` instead of `UTF-8` for system interfaces.

  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

  If set to `1`, enable the Python UTF-8 Mode.

  If set to `0`, disable the Python UTF-8 Mode.

  Setting any other non-empty string causes an error during interpreter initialisation.

  Added in version 3.7.

PYTHONWARNDEFAULTENCODING

  If this environment variable is set to a non-empty string, issue a `EncodingWarning` when the locale-specific default encoding is used.

  詳細は Opt-in 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 色の制御.

  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 フリースレッドの 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 sys.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.