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

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

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


1.1. コマンドライン
===================

Python を起動するとき、以下のうち任意のオプションを指定できます:

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

-c <command>

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

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

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

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

   バージョン 3.11 で追加.

--help-xoptions

   Print a description of implementation-specific "-X" options and
   exit.

   バージョン 3.11 で追加.

--help-all

   Print complete usage information and exit.

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

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

-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, depending on
   compilation options).  See also "PYTHONDEBUG".

-E

   Ignore all "PYTHON*" environment variables, e.g. "PYTHONPATH" and
   "PYTHONHOME", that might be set.

   See also the "-P" and "-I" (isolated) options.

-i

   When a script is passed as first argument or the "-c" option is
   used, enter interactive mode after executing the script or the
   command, 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.

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

   バージョン 3.11 で追加.

-q

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

   バージョン 3.2 で追加.

-R

   Turn on hash randomization. This option only has an effect if the
   "PYTHONHASHSEED" environment variable is set to "0", 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*(*n*^2)
   complexity.  See http://ocert.org/advisories/ocert-2011-003.html
   for details.

   "PYTHONHASHSEED" によってハッシュシードの固定値を秘密にすることが出
   来ます。

   バージョン 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
      -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 whole warning message; this
   match is case-insensitive.

   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.

   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 を参照してくだ
   さい。

-x

   Unix 以外の形式の "#!cmd" を使うために、ソースの最初の行をスキップ
   します。これは、DOS専用のハックのみを目的としています。

-X

   様々な実装固有のオプションのために予約されています。現在のところ
   CPython は以下の値を定義しています:

   * "-X faulthandler" to enable "faulthandler". See also
     "PYTHONFAULTHANDLER".

   * "-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.

   * "-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.

   * "-X int_max_str_digits" configures the integer string conversion
     length limitation.  See also "PYTHONINTMAXSTRDIGITS".

   * "-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 "python3
     -X importtime -c 'import asyncio'".  See also
     "PYTHONPROFILEIMPORTTIME".

   * "-X dev": enable Python Development Mode, introducing additional
     runtime checks that are too expensive to be enabled by default.
     See also "PYTHONDEVMODE".

   * "-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".

   * "-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".

   * "-X warn_default_encoding" issues a "EncodingWarning" when the
     locale-specific default encoding is used for opening files. See
     also "PYTHONWARNDEFAULTENCODING".

   * "-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".

   * "-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".

   任意の値を渡し、 "sys._xoptions" 辞書から取り出すことも出来ます。

   バージョン 3.2 で追加.

   バージョン 3.3 で変更: Added the "-X faulthandler" option.

   バージョン 3.4 で変更: Added the "-X showrefcount" and "-X
   tracemalloc" options.

   バージョン 3.6 で変更: Added the "-X showalloccount" option.

   バージョン 3.7 で変更: Added the "-X importtime", "-X dev" and "-X
   utf8" options.

   バージョン 3.8 で変更: Added the "-X pycache_prefix" option. The
   "-X dev" option now logs "close()" exceptions in "io.IOBase"
   destructor.

   バージョン 3.9 で変更: Using "-X dev" option, check *encoding* and
   *errors* arguments on string encoding and decoding operations.The
   "-X showalloccount" option has been removed.

   バージョン 3.10 で変更: Added the "-X warn_default_encoding"
   option. Removed the "-X oldparser" option.

   バージョン 3.11 で変更: Added the "-X no_debug_ranges", "-X
   frozen_modules" and "-X int_max_str_digits" options.


1.1.4. Options you shouldn't use
--------------------------------

-J

   Reserved for use by Jython.


1.2. 環境変数
=============

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

PYTHONHOME

   標準 Python ライブラリの場所を変更します。デフォルトでは、ライブラ
   リは "*prefix*/lib/python*version*" と
   "*exec_prefix*/lib/python*version*" から検索されます。ここで、
   "*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/python*version*" で始まります。 (上の "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.

   バージョン 3.11 で追加.

PYTHONPLATLIBDIR

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

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

   バージョン 3.7 で追加.

PYTHONDEBUG

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

PYTHONINSPECT

   この変数に空でない文字列を設定するのは "-i" オプションを指定するの
   と等価です。

   この変数は Python コードから "os.environ" を使って変更して、プログ
   ラム終了時のインスペクトモードを強制することができます。

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

   バージョン 3.11.10 で変更: (also 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

   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.

   バージョン 3.8 で追加.

PYTHONHASHSEED

   この変数が設定されていない場合や "random" に設定された場合、乱数値
   が str、bytes オブジェクトのハッシュのシードに使われます。

   "PYTHONHASHSEED" が整数値に設定された場合、その値はハッシュランダム
   化が扱う型の hash() 生成の固定シードに使われます。

   その目的は再現性のあるハッシュを可能にすることです。例えばインター
   プリタ自身の自己テストや Python プロセスのクラスタでハッシュ値を共
   有するのに用います。

   整数は [0,4294967295] の十進数でなければなりません。0 を指定すると
   ハッシュランダム化は無効化されます。

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

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

   この環境変数が設定されている場合、 Python は "ユーザ site-packages
   ディレクトリ" を "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".

   参考: **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=module   # Warn once per calling module
      PYTHONWARNINGS=once     # Warn once per Python process
      PYTHONWARNINGS=ignore   # Never warn

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

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.

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

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

   バージョン 3.7 で追加.

PYTHONASYNCIODEBUG

   この環境変数が空でない文字列に設定された場合、"asyncio" モジュール
   の デバッグモード が有効化されます。

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

   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.

   バージョン 3.6 で追加.

   バージョン 3.7 で変更: Added the ""default"" allocator.

PYTHONMALLOCSTATS

   空でない文字列に設定されると、Python は新たなオブジェクトアリーナが
   生成される時と、シャットダウン時に pymalloc メモリアロケータ の統計
   情報を表示します。

   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 "pymalloc" 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.

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.

   This may also be enabled at runtime with
   "sys._enablelegacywindowsfsencoding()".

   Availability: Windows.

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

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

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

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

   バージョン 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 を参照してください。

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

   バージョン 3.11 で追加.


1.2.1. デバッグモード変数
-------------------------

PYTHONTHREADDEBUG

   If set, Python will print threading debug info into stdout.

   Need a debug build of Python.

   バージョン 3.10 で非推奨、バージョン 3.12 で削除予定.

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.

   バージョン 3.11 で追加.
