1. コマンドラインと環境¶
CPython インタプリタはコマンドラインと環境を読み取って様々な設定を行ないます。
ほかの実装では、コマンドラインの形式が異なる場合があります。 関連情報は 別のPythonの実装 を参照してください。
1.1. コマンドライン¶
Python を起動するとき、以下のうち任意のオプションを指定できます:
python [-bBdEhiIOPqRsSuvVWx?] [-c command | -m module-name | script | - ] [args]
もちろん、もっとも一般的な利用方法は、単純にスクリプトを起動することです:
python myscript.py
1.1.1. インターフェイスオプション¶
インタプリタのインターフェイスは UNIX シェルのものに似ていますが、より多くの起動方法を提供しています:
標準入力が tty デバイスに接続された状態で起動すると、EOF (ファイル終端文字) を読み込むまで、コマンドの入力を促して実行する処理を繰り返します。 EOF は UNIX では Ctrl-D、Windows では Ctrl-Z, Enter で入力できます。 対話モードについて詳しくは、対話モード を参照してください。
ファイル名引数か、標準入力としてファイルを渡された場合、そのファイルからスクリプトを読み込んで実行します。
ディレクトリ名を引数に受け取った場合、そのディレクトリから適切な名前のスクリプトファイルを読み込んで実行します。
-c commandを指定して起動すると、command に指定された Python の文を実行します。 command には、改行で区切って複数の文を指定できます。-m module-nameを指定して起動すると、標準のインポート機構を使って指定されたモジュールを探し、スクリプトとして実行します。
非インタラクティブモードでは、入力の全体が実行前にパースされます。
インターフェイスオプションは、インタープリタが処理するオプションのリストを終了させます。
それ以降の引数はすべて sys.argv に格納されます。
ただし、添字がゼロの最初の要素 (sys.argv[0]) は、プログラムのソースを表す文字列になります。
- -c <command>¶
command 内の Python コードを実行します。 command には、改行で区切って 1 つ以上の文を指定できます。 通常のモジュールのコードと同様に、行頭の空白文字は意味を持ちます。
このオプションが指定された場合、
sys.argvの最初の要素は"-c"になり、カレントディレクトリがsys.pathの先頭に追加されます (そのディレクトリにあるモジュールをトップレベルモジュールとして import 出来るようになります)。引数
commandを指定して 監査イベントcpython.run_commandを送出します。バージョン 3.14 で変更: command は実行前に自動で共通のインデントが取り除かれます。
- -m <module-name>¶
標準のインポート機構を使ってモジュールを探し、その内容を
__main__モジュールとして実行します。引数は module 名なので、拡張子 (
.py) を含めてはいけません。モジュール名は有効な Python の絶対モジュール名 (absolute module name) であるべきですが、実装がそれを強制しているとは限りません (例えば、ハイフンを名前に含める事を許可するかもしれません)。パッケージ名 (名前空間パッケージも含む) でも構いません。通常のモジュールの代わりにパッケージ名が与えられた場合、インタプリタは
<pkg>.__main__を main モジュールとして実行します。この挙動はスクリプト引数として渡されたディレクトリや zip ファイルをインタプリタが処理するのと意図的に同じにしています。注釈
このオプションは組み込みモジュールや C で書かれた拡張モジュールには利用できません。 Python モジュールファイルを持っていないからです。しかし、コンパイル済みのモジュールは、たとえ元のソースファイルがなくても利用可能です。
このオプションが指定された場合、
sys.argvの最初の要素はモジュールファイルのフルパスになります (モジュールファイルを検索している間、最初の要素は"-m"に設定されます)。-cオプションと同様に、カレントディレクトリがsys.pathの先頭に追加されます。-Iオプションを使うと、sys.pathにカレントディレクトリもユーザーの site-packages ディレクトリも含まれない隔離モードで、スクリプトを実行できます。 すべてのPYTHON*環境変数も無視されます。多くの標準ライブラリモジュールにはスクリプトとして実行された時のためのコードがあります。例えば、
timeitモジュールは次のように実行可能です:python -m timeit -s "setup here" "benchmarked code here" python -m timeit -h # 詳細を表示
引数
module-nameを指定して 監査イベントcpython.run_moduleを送出します。バージョン 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オプションを使うと、sys.pathにスクリプトのディレクトリもユーザーの site-packages ディレクトリも含まれない隔離モードで、スクリプトを実行できます。 すべてのPYTHON*環境変数も無視されます。引数
filenameを指定して 監査イベントcpython.run_fileを送出します。参考
runpy.run_path()Python コードで直接使える等価な機能
インターフェイスオプションが与えられなかった場合、-i が暗黙的に指定され、sys.argv[0] が空の文字列 ("") になり、 現在のディレクトリが sys.path の先頭に追加されます。また、利用可能であればタブ補完と履歴編集が自動的に有効化されます (readline の設定 を参照してください)。
参考
バージョン 3.4 で変更: タブ補完と履歴の編集が自動的に有効化されます。
1.1.2. 一般オプション¶
- --help-env¶
Python 固有の環境変数の短い説明を表示して終了します。
Added in version 3.11.
- --help-all¶
使用方法のすべての情報を表示して終了します。
Added in version 3.11.
1.1.3. その他のオプション¶
- -b¶
エンコーディングを指定せずに
bytesまたはbytearrayをstrに変換した場合、bytesまたはbytearrayをstrと比較した場合、あるいはbytesをintと比較した場合に、警告を出します。 オプションを 2 回指定した場合 (-bb) は、エラーを発生させます。バージョン 3.15 で非推奨:
-bと-bbコマンドラインオプションは非推奨となり、Python 3.17 では何も行わなくなる予定です。 これらは主に Python 2 から 3 への移行を補助するためのものでした。 Python 3.17 以降、これらの場合にBytesWarningは発生しなくなります。 代わりに型チェッカーを使ってください。
- -B¶
与えられた場合、Python はソースモジュールのインポート時に
.pycファイルの作成を試みません。PYTHONDONTWRITEBYTECODE環境変数も参照してください。
- --check-hash-based-pycs default|always|never¶
ハッシュベースの
.pycファイルの検証方法を制御します。 キャッシュされたバイトコードの無効化 を参照してください。defaultに設定した場合、検証付きと検証なしのハッシュベースのバイトコードキャッシュファイルは、それぞれのデフォルトの意味に従って検証されます。alwaysに設定した場合、すべてのハッシュベースの.pycファイルが、検証付きか検証なしかにかかわらず、対応するソースファイルと照合されます。neverに設定した場合、ハッシュベースの.pycファイルは、対応するソースファイルと照合されません。タイムスタンプベースの
.pycファイルの扱いは、このオプションの影響を受けません。
- -d¶
パーサのデバッグ出力を有効にします (上級者向け)。
PYTHONDEBUG環境変数も参照してください。このオプションには Python のデバッグビルド が必要で、それ以外では無視されます。
- -E¶
PYTHONPATHやPYTHONHOMEなど、設定されているすべてのPYTHON*環境変数を無視します。
- -i¶
実行後に対話モードに入ります。
-iオプションを使うと、次のいずれの場合にも対話モードに入ります:sys.stdinがターミナルでないと判断された場合でも、対話モードが開始します。PYTHONSTARTUPファイルは読み込まれません。このオプションはグローバル変数や、スクリプトが例外を発生させるときにそのスタックトレースを調べるのに便利です。
PYTHONINSPECTも参照してください。
- -I¶
Python を隔離モードで実行します。
-E、-P、および-sオプションも暗黙的に指定されます。隔離モードでは、
sys.pathにスクリプトのディレクトリもユーザーの site-packages ディレクトリも含まれません。 すべてのPYTHON*環境変数も無視されます。 ユーザーによる悪意のあるコードの注入を防ぐため、さらに制限が課される場合もあります。Added in version 3.4.
- -O¶
assert 文と、
__debug__の値を条件とするコードを取り除きます。 コンパイル済み (バイトコード) ファイルの名前は、.pyc拡張子の前に.opt-1を追加したものになります (PEP 488 を参照)。PYTHONOPTIMIZEも参照してください。バージョン 3.5 で変更: PEP 488 に従って
.pycファイル名を変更します。
- -OO¶
-Oの処理に加えて、ドキュメンテーション文字列も取り除きます。 コンパイル済み (バイトコード) ファイルの名前は、.pyc拡張子の前に.opt-2を追加したものになります (PEP 488 を参照)。バージョン 3.5 で変更: PEP 488 に従って
.pycファイル名を変更します。
- -P¶
安全でない可能性のあるパスを
sys.pathの先頭に追加しません:コマンドラインが
python -m moduleの場合、カレント作業ディレクトリを先頭に追加しません。コマンドラインが
python script.pyの場合、スクリプトのディレクトリを先頭に追加しません。 スクリプトがシンボリックリンクの場合は、シンボリックリンクを解決します。コマンドラインが
python -c codeまたはpython(REPL) の場合、カレント作業ディレクトリを意味する空文字列を先頭に追加しません。
PYTHONSAFEPATH環境変数と、-Eおよび-I(隔離モード) オプションも参照してください。Added in version 3.11.
- -q¶
インタラクティブモードでも copyright とバージョンのメッセージを表示しません。
Added in version 3.2.
- -R¶
ハッシュのランダム化を有効にします。 ハッシュのランダム化はデフォルトで有効なため、このオプションは
PYTHONHASHSEED環境変数がrandom以外の値に設定されている場合にのみ効果があります。以前のバージョンの Python では、このオプションはハッシュのランダム化を有効にし、str オブジェクトと bytes オブジェクトの
__hash__()の値に、予測不能なランダムな値による「ソルト」を加えます。 ハッシュ値は、個々の Python プロセス内では一定ですが、Python を起動し直した場合の値を予測することはできません。ハッシュのランダム化は、辞書の構築時の最悪の計算量 O(n2) を悪用するように選ばれた入力によって、サービス拒否が発生するのを防ぐためのものです。 詳細は https://ocert.org/advisories/ocert-2011-003.html を参照してください。
PYTHONHASHSEEDを使うと、ハッシュのシードに使う秘密の値を固定値に設定できます。Added in version 3.2.3.
バージョン 3.7 で変更: このオプションが無視されなくなりました.
- -s¶
ユーザのサイトパッケージのディレクトリをsys.pathに追加しません。PYTHONNOUSERSITEも参照してください。参考
PEP 370 -- ユーザごとの
site-packagesディレクトリ
- -S¶
siteモジュールの import と、そのモジュールが行なっていた site ごとのsys.pathへの操作を無効にします。後でsiteを明示的に import しても、これらの操作は実行されません (実行したい場合は、site.main()を呼び出してください)。
- -u¶
stdout と stderr のストリームでバッファリングを行わないように強制します。 このオプションは stdin ストリームには影響しません。
PYTHONUNBUFFEREDも参照してください。バージョン 3.7 で変更: stdout と stderr のストリームのテキスト層で、バッファリングを行わなくなりました。
- -v¶
モジュールが初期化されるたびにメッセージを出力し、それがどこ (ファイル名やビルトインモジュール) からロードされたのかを表示します。 二回与えられた場合 (
-vv) は、モジュールを検索するときにチェックしたファイルごとにメッセージを出力します。また、終了時のモジュールクリーンアップに関する情報も提供します。バージョン 3.10 で変更:
siteモジュールが、処理中のサイト固有のパスと.pthファイルを報告するようになりました。PYTHONVERBOSEも参照してください。
- -W arg¶
警告制御。 Python の警告機構はデフォルトでは警告メッセージを
sys.stderrに表示します。最も単純な設定では、プロセスが出すすべての警告に、特定のアクションを無条件で適用します (通常はデフォルトで無視される警告も対象です)。
-Wdefault # 呼び出し箇所ごとに一度警告 -Werror # 例外に変換 -Walways # 毎回警告 -Wall # -Walways と同じ -Wmodule # 呼び出し元モジュールごとに一度警告 -Wonce # Python プロセスごとに一度警告 -Wignore # 警告しない
アクション名は任意の長さに省略でき、インタープリタが適切なアクション名に解決します。 例えば、
-Wiは-Wignoreと同じです。引数の完全形は次のようになります:
action:message:category:module:lineno
空のフィールドはすべての値にマッチします。 末尾の空のフィールドは省略できます。 例えば、
-W ignore::DeprecationWarningはすべての DeprecationWarning 警告を無視します。action フィールドは前述のとおりですが、残りのフィールドにマッチする警告にだけ適用されます。
message フィールドは、警告メッセージの先頭とマッチする必要があります。 このマッチでは大文字と小文字を区別しません。 スラッシュ (
/) で始まり、スラッシュで終わる場合は正規表現を指定し、それ以外の場合はリテラル文字列を指定します。category フィールドは警告カテゴリ (例:
DeprecationWarning) とマッチします。 このフィールドにはクラス名を指定する必要があります。 メッセージの実際の警告カテゴリが、指定した警告カテゴリのサブクラスかどうかが調べられます。module フィールドは、完全修飾されたモジュール名とマッチします。 このマッチでは大文字と小文字を区別します。 スラッシュ (
/) で始まり、スラッシュで終わる場合は、完全修飾されたモジュール名の先頭がマッチする必要のある正規表現を指定します。 それ以外の場合は、完全修飾されたモジュール名と等しくなければならないリテラル文字列を指定します。lineno フィールドは行番号とマッチします。 ゼロはすべての行番号にマッチするため、行番号を省略した場合と同じです。
複数の
-Wオプションを指定できます。 警告が複数のオプションにマッチした場合は、最後にマッチしたオプションのアクションが実行されます。 不正な-Wオプションは無視されます (ただし、最初の警告が出される際に、不正なオプションについての警告メッセージが表示されます)。警告は
PYTHONWARNINGS環境変数や、Python プログラム内からwarningsモジュールを使って制御することもできます。 例えば、warnings.filterwarnings()関数を使うと、警告メッセージに対して正規表現を使用できます。詳しくは 警告フィルタ と 警告フィルタの指定方法 を参照してください。
バージョン 3.15 で変更: message と module で正規表現が使えるようになりました。
- -x¶
ソースの最初の行を読み飛ばし、Unix 以外の形式の
#!cmdを使用できるようにします。このオプションを使うと、Python スクリプトを Windows のバッチファイルにできます。 Unix で shebang 行を追加して実行可能ビットを設定するのと同じように、Python スクリプトの拡張子を
.batに変更し、スクリプトの先頭に次の行を追加できます:@py -x "%~f0" %* & exit /b
Python インタープリタのパスを明示的に指定する場合は、次のようにします:
@"C:\Path\to\python.exe" -x "%~f0" %* & exit /b
Python のコメントである shebang 行とは異なり、この行は Python の有効な構文ではないため、読み飛ばすには
-xオプションが必要です。
- -X¶
様々な実装固有のオプションのために予約されています。現在のところ CPython は以下の値を定義しています:
-X faulthandlerはfaulthandlerを有効にします。PYTHONFAULTHANDLERも参照してください。Added in version 3.3.
-X showrefcountは、プログラムの終了時、または対話的インタープリタでの各文の実行後に、参照カウントの合計と使用中のメモリブロック数を出力します。 デバッグビルド でのみ動作します。Added in version 3.4.
-X tracemallocは、tracemallocモジュールを使って Python のメモリ割り当ての追跡を開始します。 デフォルトでは、追跡結果のトレースバックには最新のフレームのみが保存されます。 トレースバックを最大 NFRAME フレームに制限して追跡を開始するには、-X tracemalloc=NFRAMEを使います。 詳細はtracemalloc.start()とPYTHONTRACEMALLOCを参照してください。Added in version 3.4.
-X int_max_str_digitsは 整数と文字列の間の変換の長さ制限 を設定します。PYTHONINTMAXSTRDIGITSも参照してください。Added in version 3.11.
-X importtimeは、各インポートにかかる時間を表示します。 モジュール名、累積時間 (ネストされたインポートを含む)、自身の処理時間 (ネストされたインポートを除く) を表示します。 マルチスレッドのアプリケーションでは、出力が崩れる場合があります。 典型的な使い方はpython -X importtime -c 'import asyncio'です。-X importtime=2は、インポートされたモジュールがすでに読み込まれている場合に、そのことを示す追加の出力を有効にします。 この場合、両方の時間の列に文字列cachedが表示されます。PYTHONPROFILEIMPORTTIMEも参照してください。Added in version 3.7.
バージョン 3.14 で変更: 読み込み済みのモジュールのインポートも追跡する
-X importtime=2を追加し、1と2以外の値を将来のために予約しました。-X devは Python 開発モード を有効にします。 このモードでは、負荷が大きいためデフォルトでは有効にできない追加の実行時チェックを行います。PYTHONDEVMODEも参照してください。Added in version 3.7.
-X utf8は Python UTF-8 モード を有効にします。-X utf8=0は、通常なら自動で有効になる場合でも、Python UTF-8 モード を明示的に無効にします。PYTHONUTF8も参照してください。Added in version 3.7.
-X pycache_prefix=PATHは、コードツリー内ではなく、指定したディレクトリをルートとする対応する別のツリー内に.pycファイルを書き込むようにします。PYTHONPYCACHEPREFIXも参照してください。Added in version 3.8.
-X warn_default_encodingは、ファイルを開く際にロケール固有のデフォルトのエンコーディングが使われると、EncodingWarningを発生させます。PYTHONWARNDEFAULTENCODINGも参照してください。Added in version 3.10.
-X no_debug_rangesは、コードオブジェクトの各命令に追加の位置情報 (終了行、開始列のオフセット、終了列のオフセット) を対応付けるテーブルを含めないようにします。 これは、コードオブジェクトや pyc ファイルを小さくしたい場合や、インタープリタがトレースバックを表示する際に追加の位置を示す表示を抑制したい場合に役立ちます。PYTHONNODEBUGRANGESも参照してください。Added in version 3.11.
-X frozen_modulesdetermines whether or not frozen modules are ignored by the import machinery. A value ofonmeans they get imported andoffmeans they are ignored. The default isonif this is an installed Python (the normal case). If it's under development (running from the source tree) then the default isoff. Note that theimportlib_bootstrapandimportlib_bootstrap_externalfrozen modules are always used, even if this flag is set tooff. See alsoPYTHON_FROZEN_MODULES.Added in version 3.11.
-X perfは、Linux のperfプロファイラのサポートを有効にします。 このオプションを指定すると、perfプロファイラが Python の呼び出しを報告できるようになります。 このオプションは一部のプラットフォームでのみ利用でき、現在のシステムでサポートされていない場合は何も行いません。 デフォルトの値は "off" です。PYTHONPERFSUPPORTと perf map 対応プロファイラのための Python のサポート も参照してください。Added in version 3.12.
-X perf_jitは、DWARF に対応した Linux のperfプロファイラのサポートを有効にします。 このオプションを指定すると、perfプロファイラが DWARF 情報を使って Python の呼び出しを報告できるようになります。 このオプションは一部のプラットフォームでのみ利用でき、現在のシステムでサポートされていない場合は何も行いません。 デフォルトの値は "off" です。PYTHON_PERF_JIT_SUPPORTと perf map 対応プロファイラのための Python のサポート も参照してください。Added in version 3.13.
-X disable-remote-debugは、PEP 768 で説明されているリモートデバッグのサポートを無効にします。 これには、別のプロセスでのコード実行を予約する機能と、現在のプロセスで実行するコードを受け取る機能の両方が含まれます。このオプションは一部のプラットフォームでのみ利用でき、現在のシステムでサポートされていない場合は何も行いません。
PYTHON_DISABLE_REMOTE_DEBUGと PEP 768 も参照してください。Added in version 3.14.
-X cpu_count=nはos.cpu_count()、os.process_cpu_count()、multiprocessing.cpu_count()を上書きします。 n は 1 以上でなければなりません。 このオプションは、コンテナシステムの CPU リソースを制限する必要がある場合に役立つことがあります。PYTHON_CPU_COUNTも参照してください。 n がdefaultの場合、上書きは行われません。Added in version 3.13.
-X presite=moduleまたは-X presite=module:funcは、siteモジュールの実行前、かつ__main__モジュールが存在する前に実行するエントリーポイントを指定します。 したがって、インポートされたモジュールは__main__ではありません。 これは、Python の初期化の早い段階でコードを実行するために使用できます。 このオプションを利用するには、Python が デバッグモードでビルド されている必要があります。PYTHON_PRESITEも参照してください。バージョン 3.15 で変更: エントリーポイントの形式として
module:funcも受け付けるようになりました。Added in version 3.13.
-X gil=0,1は、それぞれ GIL を強制的に無効または有効にします。0への設定は、--disable-gilを指定して構成したビルドでのみ利用できます。PYTHON_GILと フリースレッドの CPython も参照してください。Added in version 3.13.
-X thread_inherit_context=0,1を1に設定すると、Threadはデフォルトで、Thread.start()の呼び出し元のコンテキストのコピーを使ってスレッドを開始します。 それ以外の場合、スレッドは空のコンテキストで開始します。 未設定の場合、このオプションのデフォルト値は、フリースレッドビルドでは1、それ以外では0です。PYTHON_THREAD_INHERIT_CONTEXTも参照してください。Added in version 3.14.
-X context_aware_warnings=0,1を1に設定すると、warnings.catch_warningsコンテキストマネージャは、警告フィルタの状態の保存にContextVarを使います。 未設定の場合、このオプションのデフォルト値は、フリースレッドビルドでは1、それ以外では0です。PYTHON_CONTEXT_AWARE_WARNINGSも参照してください。Added in version 3.14.
-X pathconfig_warnings=0,1が真 (1) の場合、sys.path モジュール検索パスの初期化 の際に stderr に警告を出力できます。 偽 (0) の場合は、これらの警告を抑制します。 デフォルトでは真に設定されます。PYTHON_PATHCONFIG_WARNINGSも参照してください。Added in version 3.15.
-X tlbc=0,1は、--disable-gilを指定して構成したビルドで、スレッドローカルなバイトコードを有効 (1、デフォルト) または無効 (0) にします。 無効にすると、特殊化インタープリタも無効になります。PYTHON_TLBCも参照してください。Added in version 3.14.
-X lazy_imports=all,normalは、遅延インポートの挙動を制御します。allではすべてのインポートをデフォルトで遅延させ、normal(デフォルト) はソースコード内のlazyキーワードに従います。PYTHON_LAZY_IMPORTSも参照してください。Added in version 3.15.
任意の値を渡し、
sys._xoptions辞書から取り出すことも出来ます。Added in version 3.2.
バージョン 3.9 で変更:
-X showalloccountオプションは削除されました。バージョン 3.10 で変更:
-X oldparserオプションは削除されました。
Removed in version 3.14: -J は Jython 用に予約されなくなり、特別な意味を持たなくなりました。
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¶
空でない文字列を設定すると、安全でない可能性のあるパスを
sys.pathの先頭に追加しなくなります。 詳細は-Pオプションを参照してください。Added in version 3.11.
- PYTHONPLATLIBDIR¶
空でない文字列を設定すると、
sys.platlibdirの値を上書きします。Added in version 3.9.
- PYTHONSTARTUP¶
この変数が読み込み可能なファイル名の場合、対話モードで最初のプロンプトが表示される前にそのファイルの Python コマンドが実行されます。 ファイル内で定義されているオブジェクトやインポートされたオブジェクトを対話セッションで修飾せずに使用するために、ファイルは対話的なコマンドと同じ名前空間で実行されます。 このファイルの中で、プロンプト
sys.ps1やsys.ps2、ならびにフックsys.__interactivehook__も変更できます。起動時に呼び出されると、ファイル名を引数として 監査イベント
cpython.run_startupを送出します。
- PYTHONBREAKPOINT¶
設定する場合は、ドット区切りのパス表記で呼び出し可能オブジェクトを指定します。 そのオブジェクトを含むモジュールがインポートされ、続いて
sys.breakpointhook()のデフォルト実装によってそのオブジェクトが呼び出されます。 このフック自体は、組み込みのbreakpoint()から呼び出されます。 未設定の場合、または空文字列に設定した場合は、値 "pdb.set_trace" を指定した場合と同じです。 文字列 "0" を設定すると、sys.breakpointhook()のデフォルト実装は何も行わず、直ちに戻ります。Added in version 3.7.
- PYTHONDEBUG¶
この変数に空でない文字列を設定するのは
-dオプションを指定するのと等価です。整数を指定した場合、-dを複数回指定したのと同じになります。この環境変数には Python のデバッグビルド が必要で、それ以外では無視されます。
- PYTHONINSPECT¶
この変数に空でない文字列を設定するのは
-iオプションを指定するのと等価です。この変数は Python コードから
os.environを使って変更して、プログラム終了時のインスペクトモードを強制することができます。引数無しで 監査イベント
cpython.run_stdinを送出します。バージョン 3.12.5 で変更: (3.11.10、3.10.15、3.9.20、3.8.20 も同様) 監査イベントを送出するようになりました。
バージョン 3.13 で変更: 可能な場合は PyREPL を使用するようになり、その場合は
PYTHONSTARTUPも実行されます。 監査イベントを送出するようになりました。
- PYTHONDONTWRITEBYTECODE¶
この変数に空でない文字列を設定した場合、 Python はソースモジュールのインポート時に
.pycファイルを作成しようとはしなくなります。-Bオプションを指定するのと等価です。
- PYTHONPYCACHEPREFIX¶
設定すると、Python はソースツリー内の
__pycache__ディレクトリではなく、このパスを起点としてソースツリーに対応するディレクトリツリー内に.pycファイルを書き込みます。-Xpycache_prefix=PATHオプションの指定と同じです。Added in version 3.8.
- PYTHONHASHSEED¶
この変数が設定されていない場合や
randomに設定された場合、乱数値が str、bytes オブジェクトのハッシュのシードに使われます。PYTHONHASHSEEDが整数値に設定された場合、その値はハッシュランダム化が扱う型の hash() 生成の固定シードに使われます。その目的は再現性のあるハッシュを可能にすることです。例えばインタープリタ自身の自己テストや Python プロセスのクラスタでハッシュ値を共有するのに用います。
整数は [0,4294967295] の十進数でなければなりません。0 を指定するとハッシュランダム化は無効化されます。
Added in version 3.2.3.
- PYTHONINTMAXSTRDIGITS¶
整数を設定すると、インタープリタ全体の 整数と文字列の間の変換の長さ制限 を設定するために使われます。
Added in version 3.11.
- PYTHONIOENCODING¶
この変数がインタープリタ実行前に設定されていた場合、
encodingname:errorhandlerという文法で標準入力/標準出力/標準エラー出力のエンコードを上書きします。encodingnameと:errorhandlerの部分はどちらも任意で、str.encode()と同じ意味を持ちます。標準エラー出力の場合、
:errorhandlerの部分は無視されます; ハンドラは常に'backslashreplace'です。バージョン 3.4 で変更:
encodingnameの部分が任意になりました。バージョン 3.6 で変更: Windows では、
PYTHONLEGACYWINDOWSSTDIOも指定しない限り、この変数で指定したエンコーディングは対話型コンソールのバッファに対しては無視されます。 標準ストリームでリダイレクトされたファイルやパイプは、この制限の影響を受けません。
- PYTHONNOUSERSITE¶
-sオプションと同じです。 設定すると、Python はユーザーの site-packages ディレクトリをsys.pathに追加しなくなります。参考
PEP 370 -- ユーザごとの
site-packagesディレクトリ
- PYTHONUSERBASE¶
ユーザーベースディレクトリを定義します。 このディレクトリは、ユーザーの site-packages ディレクトリのパスと、python -m pip install --userの インストール先のパス を求めるために使われます。ユーザーの site-packages を無効にするには、
PYTHONNOUSERSITEまたは-sオプションを参照してください。参考
PEP 370 -- ユーザごとの
site-packagesディレクトリ
- PYTHONEXECUTABLE¶
この環境変数が設定された場合、
sys.argv[0]に、C ランタイムから取得した値の代わりにこの環境変数の値が設定されます。macOS でのみ動作します。
- PYTHONWARNINGS¶
-Wオプションと同じです。 コンマで区切った文字列を設定すると、-Wを複数回指定した場合と同じになり、リストの後ろにあるフィルタが前にあるフィルタより優先されます。最も単純な設定では、プロセスが出すすべての警告に、特定のアクションを無条件で適用します (通常はデフォルトで無視される警告も対象です)。
PYTHONWARNINGS=default # 呼び出し箇所ごとに一度警告 PYTHONWARNINGS=error # 例外に変換 PYTHONWARNINGS=always # 毎回警告 PYTHONWARNINGS=all # PYTHONWARNINGS=always と同じ PYTHONWARNINGS=module # 呼び出し元モジュールごとに一度警告 PYTHONWARNINGS=once # Python プロセスごとに一度警告 PYTHONWARNINGS=ignore # 警告しない
詳しくは 警告フィルタ と 警告フィルタの指定方法 を参照してください。
バージョン 3.15 で変更: message と module で正規表現が使えるようになりました。
- PYTHONFAULTHANDLER¶
空でない文字列を設定すると、起動時に
faulthandler.enable()を呼び出し、Python のトレースバックをダンプするハンドラをSIGSEGV、SIGFPE、SIGABRT、SIGBUS、SIGILLの各シグナルに設定します。-Xfaulthandlerオプションの指定と同じです。Added in version 3.3.
- PYTHONTRACEMALLOC¶
空でない文字列を設定すると、
tracemallocモジュールを使って Python のメモリ割り当ての追跡を開始します。 この変数の値は、追跡結果のトレースバックに保存するフレーム数の上限です。 例えば、PYTHONTRACEMALLOC=1は最新のフレームだけを保存します。 詳細はtracemalloc.start()関数を参照してください。-Xtracemallocオプションの設定と同じです。Added in version 3.4.
- PYTHONPROFILEIMPORTTIME¶
1を設定すると、Python は各インポートにかかる時間を表示します。2を設定すると、インポートしたモジュールがすでに読み込まれている場合の出力も含まれます。-Ximporttimeオプションの設定と同じです。Added in version 3.7.
バージョン 3.14 で変更: 読み込み済みのモジュールのインポートも追跡する
PYTHONPROFILEIMPORTTIME=2を追加しました。
- PYTHONMALLOC¶
Python のメモリアロケータの設定や、デバッグフックのインストールを行います。
Python が使うメモリアロケータの種類を設定します:
default: デフォルトのメモリアロケータ を使います。malloc: すべてのドメイン (PYMEM_DOMAIN_RAW、PYMEM_DOMAIN_MEM、PYMEM_DOMAIN_OBJ) に C ライブラリのmalloc()関数を使います。pymalloc:PYMEM_DOMAIN_MEMおよびPYMEM_DOMAIN_OBJドメインには pymalloc アロケータ を使い、PYMEM_DOMAIN_RAWドメインにはmalloc()関数を使います。mimalloc:PYMEM_DOMAIN_MEMおよびPYMEM_DOMAIN_OBJドメインには mimalloc アロケータ を使い、PYMEM_DOMAIN_RAWドメインにはmalloc()関数を使います。
デバッグフック をインストールします:
debug: デフォルトのメモリアロケータ にデバッグフックを追加します。malloc_debug:mallocと同じですが、デバッグフックもインストールします。pymalloc_debug:pymallocと同じですが、デバッグフックもインストールします。mimalloc_debug:mimallocと同じですが、デバッグフックもインストールします。
注釈
フリースレッド ビルドでは、
malloc、malloc_debug、pymalloc、pymalloc_debugの値はサポートされていません。default、debug、mimalloc、mimalloc_debugのみを受け付けます。Added in version 3.6.
バージョン 3.7 で変更:
"default"アロケータを追加しました。
- PYTHONMALLOCSTATS¶
空でない文字列を設定すると、Python は新しいオブジェクトアリーナを作成するたびに、また終了時に、使用中の pymalloc メモリアロケータ または mimalloc メモリアロケータ の統計情報を表示します。
PYTHONMALLOC環境変数を使って C ライブラリのmalloc()アロケータを強制的に使用している場合、またはpymallocとmimallocの両方のサポートを無効にして Python が構成されている場合は、この変数は無視されます。バージョン 3.6 で変更: リリースモードでコンパイルされた Python でも、この変数を使用できるようになりました。 空文字列に設定した場合は、効果がなくなりました。
- PYTHON_PYMALLOC_HUGEPAGES¶
ゼロ以外の整数を設定すると、pymalloc アリーナのヒュージページのサポートを有効にします。 無効にするには、
0に設定するか、未設定にします。 この変数を有効にするには、--with-pymalloc-hugepagesを指定して Python をコンパイルする必要があります。有効にすると、アリーナの割り当てに
MAP_HUGETLB(Linux) またはMEM_LARGE_PAGES(Windows) を使います。 ヒュージページが利用できない場合は、自動的に通常のページに切り替えます。警告
Linux では、ヒュージページのプールが枯渇すると、
os.fork()によって起きるコピーオンライトのフォールトを含むページフォールトにより、SIGBUSが送出されてプロセスが終了します。 ヒュージページのプールのサイズが適切で、fork の安全性が問題にならない環境でのみ有効にしてください。Windows では、特別な権限が必要です。 詳細は Windows のラージページのドキュメント を参照してください。 必要な権限である SeLockMemoryPrivilege をユーザーが持っていない場合、Python は起動に失敗します。
Added in version 3.15.
- PYTHONLEGACYWINDOWSFSENCODING¶
空でない文字列を設定すると、デフォルトの ファイルシステムのエンコーディングとエラーハンドラ のモードが、3.6 より前の値である、それぞれ 'mbcs' と 'replace' に戻ります。 それ以外の場合は、新しいデフォルト値の 'utf-8' と 'surrogatepass' が使われます。
sys._enablelegacywindowsfsencoding()を使うと、実行時に有効にすることもできます。利用可能な環境: Windows.
Added in version 3.6: より詳しくは PEP 529 を参照してください。
- PYTHONLEGACYWINDOWSSTDIO¶
空でない文字列を設定すると、新しいコンソールの読み書き処理を使わなくなります。 つまり、Unicode 文字は utf-8 ではなく、有効なコンソールコードページに従ってエンコードされます。
標準ストリームがコンソールバッファを参照せず、ファイルやパイプにリダイレクトされている場合は、この変数は無視されます。
利用可能な環境: Windows.
Added in version 3.6.
- PYTHONCOERCECLOCALE¶
値を
0に設定すると、Python のメインのコマンドラインアプリケーションは、従来の ASCII ベースの C および POSIX ロケールを、より機能の豊富な UTF-8 ベースのロケールに強制変換しなくなります。この変数が 未設定 (または
0以外の値に設定されている) で、ロケールを上書きするLC_ALL環境変数も未設定であり、LC_CTYPEカテゴリの現在のロケールがデフォルトのCロケールまたは明示的に ASCII ベースとされたPOSIXロケールの場合、Python CLI はインタープリタのランタイムを読み込む前に、次のロケールを記載順にLC_CTYPEカテゴリに設定しようとします:C.UTF-8C.utf8UTF-8
これらのロケールカテゴリのいずれかの設定に成功すると、Python ランタイムの初期化前に、現在のプロセスの環境内の
LC_CTYPE環境変数にも同じ設定を適用します。 これにより、更新された設定は、インタープリタ自体と、同じプロセス内で動作するロケールに対応したほかの構成要素 (GNU のreadlineライブラリなど) の両方に加えて、サブプロセスにも伝わります (そのプロセスが Python インタープリタを実行しているかどうかは問いません)。 また、現在の C ロケールではなく環境を照会する操作 (Python 自体のlocale.getdefaultlocale()など) にも伝わります。これらのロケールのいずれかを、明示的に、または上記の暗黙的なロケールの強制変換によって設定すると、
sys.stdinとsys.stdoutに対してsurrogateescapeエラーハンドラ が自動的に有効になります (sys.stderrは、ほかのロケールと同じくbackslashreplaceを使い続けます)。 このストリームの処理方法は、通常と同様にPYTHONIOENCODINGで上書きできます。デバッグのために
PYTHONCOERCECLOCALE=warnを設定すると、ロケールの強制変換が行われた場合、または強制変換の対象 となるはずの ロケールが Python ランタイムの初期化時にまだ有効だった場合に、Python はstderrに警告メッセージを出力します。ロケールの強制変換を無効にした場合や、適切な変換先のロケールが見つからなかった場合でも、従来の ASCII ベースのロケールでは
PYTHONUTF8がデフォルトで有効になる点にも注意してください。 システムインターフェースでインタープリタにUTF-8の代わりにASCIIを使わせるには、両方の機能を無効にする必要があります。利用可能な環境: Unix.
Added in version 3.7: より詳しくは PEP 538 を参照をしてください。
- PYTHONDEVMODE¶
空でない文字列を設定すると、Python 開発モード が有効になり、負荷が大きいためデフォルトでは有効にできない追加の実行時チェックを行います。
-Xdevオプションの設定と同じです。Added in version 3.7.
- PYTHONUTF8¶
1を設定すると、Python UTF-8 モード を有効にします。0を設定すると、Python UTF-8 モード を無効にします。それ以外の空でない文字列を設定すると、インタープリタの初期化中にエラーが発生します。
Added in version 3.7.
- PYTHONWARNDEFAULTENCODING¶
空でない文字列を設定すると、ロケール固有のデフォルトのエンコーディングを使用した場合に
EncodingWarningが発生します。詳細は EncodingWarning の有効化 を参照してください。
Added in version 3.10.
- PYTHONNODEBUGRANGES¶
設定すると、コードオブジェクトの各命令に追加の位置情報 (終了行、開始列のオフセット、終了列のオフセット) を対応付けるテーブルを含めないようにします。 これは、コードオブジェクトや pyc ファイルを小さくしたい場合や、インタープリタがトレースバックを表示する際に追加の位置を示す表示を抑制したい場合に役立ちます。
Added in version 3.11.
- PYTHONPERFSUPPORT¶
ゼロ以外の値を設定すると、Linux の
perfプロファイラのサポートが有効になり、Python の呼び出しを検出できるようになります。0を設定すると、Linux のperfプロファイラのサポートを無効にします。-X perfコマンドラインオプションと perf map 対応プロファイラのための Python のサポート も参照してください。Added in version 3.12.
- PYTHON_PERF_JIT_SUPPORT¶
ゼロ以外の値を設定すると、Linux の
perfプロファイラのサポートが有効になり、DWARF 情報を使って Python の呼び出しを検出できるようになります。0を設定すると、Linux のperfプロファイラのサポートを無効にします。-X perf_jitコマンドラインオプションと perf map 対応プロファイラのための Python のサポート も参照してください。Added in version 3.13.
- PYTHON_DISABLE_REMOTE_DEBUG¶
空でない文字列を設定すると、PEP 768 で説明されているリモートデバッグ機能を無効にします。 これには、別のプロセスでのコード実行を予約する機能と、現在のプロセスで実行するコードを受け取る機能の両方が含まれます。
-X disable-remote-debugコマンドラインオプションも参照してください。Added in version 3.14.
- PYTHON_CPU_COUNT¶
正の整数を設定すると、
os.cpu_count()とos.process_cpu_count()の戻り値を上書きします。-X cpu_countコマンドラインオプションも参照してください。Added in version 3.13.
- PYTHON_FROZEN_MODULES¶
If this variable is set to
onoroff, it determines whether or not frozen modules are ignored by the import machinery. A value ofonmeans they get imported andoffmeans they are ignored. The default isonfor non-debug builds (the normal case) andofffor debug builds. Note that theimportlib_bootstrapandimportlib_bootstrap_externalfrozen modules are always used, even if this flag is set tooff.-X frozen_modulesコマンドラインオプションも参照してください。Added in version 3.13.
- PYTHON_COLORS¶
1を設定すると、インタープリタはさまざまな出力に色を付けます。0を設定すると、この動作を無効にします。 色の制御 も参照してください。Added in version 3.13.
- PYTHON_BASIC_REPL¶
何らかの値を設定すると、インタープリタは
readlineを必要とする Python で実装された REPL を読み込もうとせず、代わりに従来のパーサに基づく REPL を使用します。Added in version 3.13.
- PYTHON_BASIC_COMPLETER¶
何らかの値を設定すると、PyREPL は色を使うデフォルトのタブ補完の代わりに、
rlcompleterを使ってタブ補完を実装します。Added in version 3.15.
- PYTHON_HISTORY¶
この環境変数を使うと、
.python_historyファイルの場所を設定できます (デフォルトは、ユーザーのホームディレクトリ内の.python_historyです)。Added in version 3.13.
- PYTHON_GIL¶
1を設定すると、グローバルインタープリタロック (GIL) を強制的に有効にします。0を設定すると GIL を強制的に無効にします (--disable-gilビルドオプションを指定して構成した Python が必要です)。この変数よりも優先される
-X gilコマンドラインオプションと、フリースレッドの CPython も参照してください。Added in version 3.13.
- PYTHON_THREAD_INHERIT_CONTEXT¶
1を設定すると、Threadはデフォルトで、Thread.start()の呼び出し元のコンテキストのコピーを使ってスレッドを開始します。 それ以外の場合、新しいスレッドは空のコンテキストで開始します。 未設定の場合、この変数のデフォルト値は、フリースレッドビルドでは1、それ以外では0です。-X thread_inherit_contextも参照してください。Added in version 3.14.
- PYTHON_CONTEXT_AWARE_WARNINGS¶
1を設定すると、warnings.catch_warningsコンテキストマネージャは、警告フィルタの状態の保存にContextVarを使います。 未設定の場合、この変数のデフォルト値は、フリースレッドビルドでは1、それ以外では0です。-X context_aware_warningsを参照してください。Added in version 3.14.
- PYTHON_PATHCONFIG_WARNINGS¶
真 (
1) の場合、sys.path モジュール検索パスの初期化 の際に stderr に警告を出力できます。 偽 (0) の場合は、これらの警告を抑制します。 デフォルトでは真に設定されます。-X pathconfig_warningsも参照してください。Added in version 3.15.
- PYTHON_JIT¶
実験的な実行時コンパイルを利用できるビルドでは、この変数によってインタープリタの起動時に JIT を強制的に無効 (
0) または有効 (1) にできます。Added in version 3.13.
- PYTHON_TLBC¶
1を設定すると、スレッドローカルなバイトコードを有効にします。0を設定すると、スレッドローカルなバイトコードと特殊化インタープリタを無効にします。--disable-gilを指定して構成したビルドでのみ適用されます。-X tlbcコマンドラインオプションも参照してください。Added in version 3.14.
- PYTHON_LAZY_IMPORTS¶
遅延インポートの挙動を制御します。 2 つの値を受け付けます。
allではすべてのインポートをデフォルトで遅延させ、normal(デフォルト) ではソースコード内のlazyキーワードに従います。-X lazy_importsコマンドラインオプションも参照してください。Added in version 3.15.
1.2.1. デバッグモード変数¶
- PYTHONDUMPREFS¶
設定された場合、 Python はインタプリタのシャットダウン後に残っているオブジェクトと参照カウントをダンプします。
--with-trace-refsビルドオプションを指定して構成した Python が必要です。
- PYTHONDUMPREFSFILE¶
設定すると、Python はインタープリタのシャットダウン後にも残っているオブジェクトと参照カウントを、この環境変数の値で指定したパスのファイルにダンプします。
--with-trace-refsビルドオプションを指定して構成した Python が必要です。Added in version 3.11.
- PYTHON_PRESITE¶
モジュールを設定すると、インタープリタのライフサイクルの早い段階、つまり
siteモジュールの実行前、かつ__main__モジュールの作成前に、そのモジュールをインポートします。 したがって、インポートされたモジュールは__main__として扱われません。これは、Python の初期化の早い段階でコードを実行するために使用できます。
サブモジュールをインポートするには、import 文と同様に、値として
package.moduleを指定します。この変数よりも優先される
-X presiteコマンドラインオプションも参照してください。--with-pydebugビルドオプションを指定して構成した Python が必要です。バージョン 3.15 で変更: エントリーポイントの形式として
module:funcも受け付けるようになりました。Added in version 3.13.