1.1。 コマンドラインと環境
CPythonインタープリターは、コマンドラインと環境をスキャンしてさまざまな設定を探します。
1.1。 コマンドライン
Pythonを呼び出すときは、次のオプションのいずれかを指定できます。
python [-bBdEhiIOqsSuvVWx?] [-c command | -m module-name | script | - ] [args]
もちろん、最も一般的な使用例は、スクリプトの単純な呼び出しです。
python myscript.py
1.1.1。 インターフェイスオプション
インタプリタインターフェイスはUNIXシェルのインターフェイスに似ていますが、いくつかの追加の呼び出しメソッドを提供します。
- ttyデバイスに接続された標準入力で呼び出されると、コマンドの入力を求められ、EOF(ファイルの終わり文字。UNIXの Ctrl-D またはで生成できます)まで実行されます。 Ctrl-Z、Enter (Windowsの場合))が読み取られます。
- ファイル名引数またはファイルを標準入力として呼び出すと、そのファイルからスクリプトを読み取って実行します。
- ディレクトリ名引数を指定して呼び出されると、そのディレクトリから適切な名前のスクリプトを読み取って実行します。
-c command
で呼び出されると、コマンドとして指定されたPythonステートメントが実行されます。 ここで、コマンドには、改行で区切られた複数のステートメントが含まれる場合があります。 先頭の空白はPythonステートメントで重要です!-m module-name
で呼び出されると、指定されたモジュールはPythonモジュールパスに配置され、スクリプトとして実行されます。
非対話型モードでは、入力全体が実行される前に解析されます。
インターフェイスオプションは、インタプリタによって消費されるオプションのリストを終了します。連続するすべての引数は、 sys.argv になります。最初の要素である添え字ゼロ(sys.argv[0]
)は文字列であることに注意してください。プログラムのソースを反映しています。
- -c <command>
コマンドでPythonコードを実行します。 command は、通常のモジュールコードのように、先頭に空白を付けて、改行で区切った1つ以上のステートメントにすることができます。
このオプションを指定すると、 sys.argv の最初の要素は
"-c"
になり、現在のディレクトリが sys.path の先頭に追加されます(モジュールを許可します)トップレベルモジュールとしてインポートされるそのディレクトリ内)。
- -m <module-name>
sys.path で名前付きモジュールを検索し、その内容を __ main __ モジュールとして実行します。
引数はモジュール名であるため、ファイル拡張子(
.py
)を指定しないでください。 モジュール名は有効な絶対Pythonモジュール名である必要がありますが、実装は常にこれを強制するとは限りません(例: ハイフンを含む名前を使用できる場合があります)。パッケージ名(名前空間パッケージを含む)も許可されます。 通常のモジュールの代わりにパッケージ名を指定すると、インタプリタはメインモジュールとして
<pkg>.__main__
を実行します。 この動作は、スクリプト引数としてインタプリタに渡されるディレクトリとzipファイルの処理に意図的に似ています。ノート
このオプションは、Pythonモジュールファイルがないため、Cで記述された組み込みモジュールおよび拡張モジュールでは使用できません。 ただし、元のソースファイルが利用できない場合でも、プリコンパイルされたモジュールには引き続き使用できます。
このオプションを指定すると、 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 # for details
バージョン3.1で変更:パッケージ名を指定して
__main__
サブモジュールを実行します。バージョン3.4で変更:名前空間パッケージもサポートされています
- -
標準入力( sys.stdin )からコマンドを読み取ります。 標準入力が端子の場合、 -i が暗示されます。
このオプションを指定すると、 sys.argv の最初の要素は
"-"
になり、現在のディレクトリが sys.path の先頭に追加されます。
- <script>
script に含まれるPythonコードを実行します。これは、Pythonファイル、
__main__.py
ファイルを含むディレクトリ、または[ X211X] ファイル。このオプションを指定すると、 sys.argv の最初の要素は、コマンドラインで指定されたスクリプト名になります。
スクリプト名がPythonファイルを直接参照している場合、そのファイルを含むディレクトリが sys.path の先頭に追加され、ファイルは __ main __ モジュールとして実行されます。
スクリプト名がディレクトリまたはzipファイルを参照している場合、スクリプト名は sys.path の先頭に追加され、その場所にある
__main__.py
ファイルは __ main __ [として実行されます。 X183X]モジュール。-I オプションを使用して、 sys.path にスクリプトのディレクトリもユーザーのsite-packagesディレクトリも含まれていない分離モードでスクリプトを実行できます。 すべての
PYTHON*
環境変数も無視されます。
インターフェイスオプションが指定されていない場合、 -i が暗黙指定され、sys.argv[0]
は空の文字列(""
)であり、現在のディレクトリがの先頭に追加されます。 sys.path 。 また、プラットフォームで利用可能な場合、タブ補完と履歴編集が自動的に有効になります( Readline構成を参照)。
バージョン3.4で変更:タブ補完と履歴編集の自動有効化。
1.1.2。 一般的なオプション
- -?
-h
--help
- すべてのコマンドラインオプションの簡単な説明を印刷します。
- -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
- 指定された場合、Pythonはソースモジュールのインポート時に
.pyc
ファイルを書き込もうとしません。 PYTHONDONTWRITEBYTECODE も参照してください。
- --check-hash-based-pycs default|always|never
ハッシュベースの
.pyc
ファイルの検証動作を制御します。 キャッシュされたバイトコードの無効化を参照してください。default
に設定すると、チェックされているハッシュベースのハッシュベースのバイトコードキャッシュファイルとチェックされていないハッシュベースのバイトコードキャッシュファイルが、デフォルトのセマンティクスに従って検証されます。always
に設定すると、すべてのハッシュベースの.pyc
ファイルは、チェックされているかどうかに関係なく、対応するソースファイルに対して検証されます。never
に設定すると、ハッシュベースの.pyc
ファイルは対応するソースファイルに対して検証されません。タイムスタンプベースの
.pyc
ファイルのセマンティクスは、このオプションの影響を受けません。
- -d
- パーサーのデバッグ出力をオンにします(コンパイルオプションに応じて、エキスパートのみ)。 PYTHONDEBUG も参照してください。
- -E
- すべての
PYTHON*
環境変数を無視します。 PYTHONPATH および PYTHONHOME 、設定されている可能性があります。
- -i
スクリプトが最初の引数として渡されるか、 -c オプションが使用される場合、 sys.stdin がターミナル。 PYTHONSTARTUP ファイルが読み込まれません。
これは、スクリプトが例外を発生させたときにグローバル変数またはスタックトレースを検査するのに役立ちます。 PYTHONINSPECT も参照してください。
- -I
Pythonを分離モードで実行します。 これは、-Eと-sも意味します。 分離モードでは、 sys.path には、スクリプトのディレクトリもユーザーのサイトパッケージディレクトリも含まれていません。 すべての
PYTHON*
環境変数も無視されます。 ユーザーが悪意のあるコードを挿入するのを防ぐために、さらに制限が課される場合があります。バージョン3.4の新機能。
- -O
__ debug __ の値を条件とするassertステートメントとコードを削除します。
.pyc
拡張子の前に.opt-1
を追加して、コンパイル済み( bytecode )ファイルのファイル名を拡張します( PEP 488 を参照)。 PYTHONOPTIMIZE も参照してください。バージョン3.5で変更: PEP 488 に従って
.pyc
ファイル名を変更します。
- -OO
-O を実行し、docstringも破棄します。
.pyc
拡張子の前に.opt-2
を追加して、コンパイル済み( bytecode )ファイルのファイル名を拡張します( PEP 488 を参照)。バージョン3.5で変更: PEP 488 に従って
.pyc
ファイル名を変更します。
- -q
インタラクティブモードでも、著作権とバージョンのメッセージを表示しないでください。
バージョン3.2の新機能。
- -R
ハッシュランダム化をオンにします。 このオプションは、 PYTHONHASHSEED 環境変数が
0
に設定されている場合にのみ効果があります。これは、ハッシュのランダム化がデフォルトで有効になっているためです。以前のバージョンのPythonでは、このオプションはハッシュランダム化をオンにするため、strオブジェクトとbytesオブジェクトの
__hash__()
値は、予測できないランダム値で「ソルト」されます。 それらは個々のPythonプロセス内で一定のままですが、Pythonを繰り返し呼び出す間で予測することはできません。ハッシュのランダム化は、dict構造の最悪の場合のパフォーマンスであるO(n ^ 2)の複雑さを悪用する、慎重に選択された入力によって引き起こされるサービス拒否に対する保護を提供することを目的としています。 詳細については、 http://www.ocert.org/advisories/ocert-2011-003.htmlを参照してください。
PYTHONHASHSEED を使用すると、ハッシュシードシークレットに固定値を設定できます。
バージョン3.7で変更:このオプションは無視されなくなりました。
バージョン3.2.3の新機能。
- -s
ユーザーサイトパッケージディレクトリを sys.path に追加しないでください。
も参照してください
PEP 370 –ユーザーごとのサイト-パッケージディレクトリ
- -S
- モジュール site のインポートと、それに伴う sys.path のサイト依存の操作を無効にします。 また、 site が後で明示的にインポートされる場合は、これらの操作を無効にします(トリガーする場合は、 site.main()を呼び出します)。
- -u
stdoutストリームとstderrストリームを強制的にバッファリング解除します。 このオプションは、stdinストリームには影響しません。
PYTHONUNBUFFERED も参照してください。
バージョン3.7で変更: stdoutおよびstderrストリームのテキストレイヤーがバッファリングされなくなりました。
- -v
- モジュールが初期化されるたびにメッセージを出力し、モジュールがロードされた場所(ファイル名または組み込みモジュール)を示します。 2回指定すると(
-vv
)、モジュールの検索時にチェックされるファイルごとにメッセージを出力します。 終了時のモジュールのクリーンアップに関する情報も提供します。 PYTHONVERBOSE も参照してください。
- -W arg
警告制御。 Pythonの警告機構は、デフォルトで警告メッセージを sys.stderr に出力します。 一般的な警告メッセージの形式は次のとおりです。
file:line: category: message
デフォルトでは、各警告は、それが発生するソース行ごとに1回出力されます。 このオプションは、警告が印刷される頻度を制御します。
複数の -W オプションを指定できます。 警告が複数のオプションに一致する場合、最後に一致したオプションのアクションが実行されます。 無効な -W オプションは無視されます(ただし、最初の警告が発行されると、無効なオプションに関する警告メッセージが出力されます)。
警告は、 PYTHONWARNINGS 環境変数を使用して、および warnings モジュールを使用してPythonプログラム内から制御することもできます。
最も単純な設定では、プロセスによって発行されるすべての警告に特定のアクションが無条件に適用されます(デフォルトで無視される警告も含まれます)。
-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
アクション名は必要に応じて省略できます(例:
-Wi
、-Wd
、-Wa
、-We
)とインタプリタは、それらを適切なアクション名に解決します。詳細については、警告フィルターおよび警告フィルターの説明を参照してください。
- -x
- ソースの最初の行をスキップして、
#!cmd
の非Unix形式の使用を許可します。 これは、DOS固有のハッキングのみを目的としています。
- -X
さまざまな実装固有のオプション用に予約されています。 CPythonは現在、次の可能な値を定義しています。
-X faulthandler
は、 faulthandler を有効にします。-X showrefcount
は、プログラムが終了したとき、または対話型インタプリタの各ステートメントの後に、合計参照カウントと使用されたメモリブロックの数を出力します。 これはデバッグビルドでのみ機能します。-X tracemalloc
は、 tracemalloc モジュールを使用してPythonメモリ割り当てのトレースを開始します。 デフォルトでは、最新のフレームのみがトレースのトレースバックに保存されます。-X tracemalloc=NFRAME
を使用して、 NFRAME フレームのトレースバック制限でトレースを開始します。 詳細については、 tracemalloc.start()を参照してください。-X showalloccount
は、プログラムの終了時に、タイプごとに割り当てられたオブジェクトの総数を出力します。 これは、PythonがCOUNT_ALLOCS
を定義してビルドされた場合にのみ機能します。-X importtime
は、各インポートにかかる時間を示します。 モジュール名、累積時間(ネストされたインポートを含む)、および自己時間(ネストされたインポートを除く)が表示されます。 マルチスレッドアプリケーションでは、その出力が壊れている可能性があることに注意してください。 一般的な使用法はpython3 -X importtime -c 'import asyncio'
です。 PYTHONPROFILEIMPORTTIME も参照してください。-X dev
:CPythonの「開発モード」を有効にし、デフォルトで有効にするにはコストがかかりすぎる追加のランタイムチェックを導入します。 コードが正しい場合は、デフォルトよりも冗長であってはなりません。新しい警告は、問題が検出された場合にのみ発行されます。 開発者モードの効果:default
警告フィルターを -Wdefault
として追加します。メモリアロケータにデバッグフックをインストールします。 PyMem_SetupDebugHooks() C関数を参照してください。
faulthandler モジュールを有効にして、クラッシュ時にPythonトレースバックをダンプします。
非同期デバッグモードを有効にします。
sys.flags の
dev_mode
属性をTrue
に設定します。io.IOBase デストラクタは
close()
例外をログに記録します。
-X utf8
は、オペレーティングシステムインターフェイスのUTF-8モードを有効にし、デフォルトのロケール認識モードを上書きします。-X utf8=0
は、UTF-8モードを明示的に無効にします(そうでなければ自動的にアクティブになる場合でも)。 詳細については、 PYTHONUTF8 を参照してください。-X pycache_prefix=PATH
を使用すると、.pyc
ファイルを、コードツリーではなく、指定されたディレクトリをルートとする並列ツリーに書き込むことができます。 PYTHONPYCACHEPREFIX も参照してください。
また、任意の値を渡し、 sys._xoptions ディクショナリを介してそれらを取得することもできます。
バージョン3.2で変更: -X オプションが追加されました。
バージョン3.3の新機能:
-X faulthandler
オプション。バージョン3.4の新機能:
-X showrefcount
および-X tracemalloc
オプション。バージョン3.6の新機能:
-X showalloccount
オプション。バージョン3.7の新機能:
-X importtime
、-X dev
、および-X utf8
オプション。バージョン3.8の新機能:
-X pycache_prefix
オプション。-X dev
オプションは、 io.IOBase デストラクタにclose()
例外をログに記録するようになりました。
1.2。 環境変数
これらの環境変数はPythonの動作に影響を与え、コマンドラインが-Eまたは-I以外に切り替わる前に処理されます。 コマンドラインスイッチは、競合がある場合に環境変数をオーバーライドするのが通例です。
- PYTHONHOME
標準のPythonライブラリの場所を変更します。 デフォルトでは、ライブラリは
prefix/lib/pythonversion
とexec_prefix/lib/pythonversion
で検索されます。ここで、prefix
とexec_prefix
はインストールに依存するディレクトリで、どちらもデフォルトで/usr/local
になります。 ]。PYTHONHOME が単一のディレクトリに設定されている場合、その値は
prefix
とexec_prefix
の両方を置き換えます。 これらに異なる値を指定するには、 PYTHONHOME をprefix:exec_prefix
に設定します。
- PYTHONPATH
モジュールファイルのデフォルトの検索パスを拡張します。 形式はシェルの
PATH
と同じです: os.pathsep で区切られた1つ以上のディレクトリパス名(例: Unixの場合はコロン、Windowsの場合はセミコロン)。 存在しないディレクトリは黙って無視されます。通常のディレクトリに加えて、個々の PYTHONPATH エントリは、純粋なPythonモジュール(ソース形式またはコンパイル済み形式)を含むzipファイルを参照する場合があります。 拡張モジュールはzipファイルからインポートできません。
デフォルトの検索パスはインストールによって異なりますが、通常は
prefix/lib/pythonversion
で始まります(上記の PYTHONHOME を参照)。 PYTHONPATH に常にが追加されます。上記のインターフェイスオプションで説明したように、 PYTHONPATH の前の検索パスに追加のディレクトリが挿入されます。 検索パスは、Pythonプログラム内から変数 sys.path として操作できます。
- PYTHONSTARTUP
- これが読み取り可能なファイルの名前である場合、そのファイル内のPythonコマンドは、最初のプロンプトがインタラクティブモードで表示される前に実行されます。 ファイルは、インタラクティブコマンドが実行されるのと同じ名前空間で実行されるため、ファイルで定義またはインポートされたオブジェクトは、インタラクティブセッションで修飾なしで使用できます。 このファイルのプロンプト sys.ps1 と sys.ps2 およびフック sys .__ Interactivehook __ を変更することもできます。
- PYTHONBREAKPOINT
これが設定されている場合、ドットパス表記を使用して呼び出し可能オブジェクトに名前を付けます。 呼び出し可能オブジェクトを含むモジュールがインポートされ、呼び出し可能オブジェクトは、組み込みの breakpoint()によって呼び出される sys.breakpointhook()のデフォルト実装によって実行されます。 設定されていない場合、または空の文字列に設定されている場合は、値「pdb.set_trace」と同等です。 これを文字列「0」に設定すると、 sys.breakpointhook()のデフォルトの実装は、ただちに戻る以外に何もしません。
バージョン3.7の新機能。
- PYTHONINSPECT
これが空でない文字列に設定されている場合は、 -i オプションを指定するのと同じです。
この変数は、 os.environ を使用してPythonコードで変更し、プログラムの終了時に検査モードを強制することもできます。
- PYTHONUNBUFFERED
- これが空でない文字列に設定されている場合は、 -u オプションを指定するのと同じです。
- PYTHONCASEOK
- これが設定されている場合、Pythonは import ステートメントの大文字と小文字を無視します。 これは、WindowsとOSXでのみ機能します。
- PYTHONDONTWRITEBYTECODE
- これが空でない文字列に設定されている場合、Pythonはソースモジュールのインポート時に
.pyc
ファイルを書き込もうとしません。 これは、 -B オプションを指定するのと同じです。
- PYTHONPYCACHEPREFIX
これが設定されている場合、Pythonはソースツリー内の
__pycache__
ディレクトリではなく、このパスのミラーディレクトリツリーに.pyc
ファイルを書き込みます。 これは、 -Xpycache_prefix=PATH
オプションを指定するのと同じです。バージョン3.8の新機能。
- PYTHONHASHSEED
この変数が
random
に設定または設定されていない場合、ランダム値を使用してstrオブジェクトとbytesオブジェクトのハッシュをシードします。PYTHONHASHSEED が整数値に設定されている場合、ハッシュランダム化の対象となるタイプのhash()を生成するための固定シードとして使用されます。
その目的は、インタープリター自体のセルフテストなど、繰り返し可能なハッシュを許可すること、またはPythonプロセスのクラスターがハッシュ値を共有できるようにすることです。
整数は、[0,4294967295]の範囲の10進数である必要があります。 値0を指定すると、ハッシュのランダム化が無効になります。
バージョン3.2.3の新機能。
- PYTHONIOENCODING
インタプリタを実行する前にこれを設定すると、構文
encodingname:errorhandler
でstdin / stdout / stderrに使用されるエンコーディングが上書きされます。encodingname
と:errorhandler
の両方の部分はオプションであり、 str.encode()と同じ意味を持ちます。stderrの場合、
:errorhandler
の部分は無視されます。 ハンドラーは常に'backslashreplace'
になります。バージョン3.4で変更:
encodingname
パーツはオプションになりました。バージョン3.6で変更: Windowsでは、 PYTHONLEGACYWINDOWSSTDIO も指定されていない限り、この変数で指定されたエンコーディングはインタラクティブコンソールバッファーでは無視されます。 標準ストリームを介してリダイレクトされたファイルとパイプは影響を受けません。
- PYTHONNOUSERSITE
これが設定されている場合、Pythonはユーザーサイトパッケージディレクトリを sys.path に追加しません。
も参照してください
PEP 370 –ユーザーごとのサイト-パッケージディレクトリ
- PYTHONUSERBASE
ユーザーベースディレクトリを定義します。これは、
python setup.py install --user
のユーザーサイトパッケージディレクトリおよび Distutilsインストールパスのパスを計算するために使用されます。も参照してください
PEP 370 –ユーザーごとのサイト-パッケージディレクトリ
- PYTHONEXECUTABLE
- この環境変数が設定されている場合、
sys.argv[0]
は、Cランタイムを介して取得された値ではなく、その値に設定されます。 Mac OSXでのみ動作します。
- PYTHONWARNINGS
これは、 -W オプションと同等です。 カンマ区切りの文字列に設定すると、 -W を複数回指定するのと同じで、リストの後半のフィルターがリストの前のフィルターよりも優先されます。
最も単純な設定では、プロセスによって発行されるすべての警告に特定のアクションが無条件に適用されます(デフォルトで無視される警告も含まれます)。
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
詳細については、警告フィルターおよび警告フィルターの説明を参照してください。
- PYTHONFAULTHANDLER
この環境変数が空でない文字列に設定されている場合、起動時に faulthandler.enable()が呼び出されます。
SIGSEGV
、SIGFPE
、SIGABRT
、SIGBUS
、およびSIGILL
は、Pythonトレースバックをダンプするように通知します。 これは、 -Xfaulthandler
オプションと同等です。バージョン3.3の新機能。
- PYTHONTRACEMALLOC
この環境変数が空でない文字列に設定されている場合は、 tracemalloc モジュールを使用してPythonメモリ割り当てのトレースを開始します。 変数の値は、トレースのトレースバックに格納されるフレームの最大数です。 たとえば、
PYTHONTRACEMALLOC=1
は最新のフレームのみを格納します。 詳細については、 tracemalloc.start()を参照してください。バージョン3.4の新機能。
- PYTHONPROFILEIMPORTTIME
この環境変数が空でない文字列に設定されている場合、Pythonは各インポートにかかる時間を表示します。 これは、コマンドラインで
-X importtime
を設定するのとまったく同じです。バージョン3.7の新機能。
- 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()
関数を使用しますドメイン。
デバッグフックをインストールします。
debug
:デフォルトのメモリアロケータの上にデバッグフックをインストールします。malloc_debug
:malloc
と同じですが、デバッグフックもインストールします。pymalloc_debug
:pymalloc
と同じですが、デバッグフックもインストールします。
デフォルトのメモリアロケータおよび PyMem_SetupDebugHooks()関数(Pythonメモリアロケータにデバッグフックをインストールする)を参照してください。
バージョン3.7で変更:
"default"
アロケータを追加しました。バージョン3.6の新機能。
- PYTHONMALLOCSTATS
空でない文字列に設定すると、Pythonは、新しいpymallocオブジェクトアリーナが作成されるたびに、シャットダウン時に pymallocメモリアロケータの統計を出力します。
PYTHONMALLOC 環境変数を使用してCライブラリの
malloc()
アロケータを強制する場合、またはPythonがpymalloc
なしで構成されている場合、この変数は無視されます。サポート。バージョン3.6で変更:この変数は、リリースモードでコンパイルされたPythonでも使用できるようになりました。 空の文字列に設定しても効果がなくなりました。
- PYTHONLEGACYWINDOWSFSENCODING
空でない文字列に設定すると、デフォルトのファイルシステムエンコーディングおよびエラーモードは、それぞれ「mbcs」および「replace」の3.6より前の値に戻ります。 それ以外の場合は、新しいデフォルトの「utf-8」と「surrogatepass」が使用されます。
これは、 sys._enablelegacywindowsfsencoding()を使用して実行時に有効にすることもできます。
バージョン3.6の新機能:詳細については、 PEP 529 を参照してください。
- PYTHONLEGACYWINDOWSSTDIO
空でない文字列に設定されている場合、新しいコンソールリーダーとライターを使用しません。 これは、Unicode文字が、utf-8を使用するのではなく、アクティブなコンソールコードページに従ってエンコードされることを意味します。
この変数は、コンソールバッファーを参照するのではなく、標準ストリームが(ファイルまたはパイプに)リダイレクトされる場合は無視されます。
バージョン3.6の新機能。
- PYTHONCOERCECLOCALE
値
0
に設定すると、メインのPythonコマンドラインアプリケーションは、従来のASCIIベースのCおよびPOSIXロケールをより高性能なUTF-8ベースの代替ロケールに強制変換することをスキップします。この変数が not に設定されている(または
0
以外の値に設定されている)場合、LC_ALL
ロケールオーバーライド環境変数も設定されず、現在のロケールが報告されますLC_CTYPE
カテゴリの場合、デフォルトのC
ロケール、または明示的にASCIIベースのPOSIX
ロケールのいずれかである場合、PythonCLIは[インタープリターランタイムをロードする前にリストされた順序のX378X] カテゴリー:C.UTF-8
C.utf8
UTF-8
これらのロケールカテゴリのいずれかの設定が成功すると、Pythonランタイムが初期化される前に、
LC_CTYPE
環境変数も現在のプロセス環境でそれに応じて設定されます。 これにより、インタープリター自体と、同じプロセスで実行されている他のロケール対応コンポーネント(GNUreadline
ライブラリなど)の両方に表示されるだけでなく、更新された設定がサブプロセスにも表示されるようになります(これらのプロセスがPythonインタープリターを実行しているかどうか)、および現在のCロケールではなく環境を照会する操作(Python独自の locale.getdefaultlocale()など)。これらのロケールの1つを(明示的にまたは上記の暗黙的なロケール強制を介して)構成すると、 sys.stdin および sys.stdoutの
surrogateescape
エラーハンドラーが自動的に有効になります。 ( sys.stderr は、他のロケールと同様にbackslashreplace
を引き続き使用します)。 このストリーム処理動作は、通常どおり PYTHONIOENCODING を使用してオーバーライドできます。デバッグの目的で、
PYTHONCOERCECLOCALE=warn
を設定すると、ロケール強制がアクティブになった場合、またはがが強制をトリガーしたロケールがまだ存在する場合、Pythonはstderr
で警告メッセージを出力します。 Pythonランタイムが初期化されるときにアクティブになります。また、ロケール強制が無効になっている場合、または適切なターゲットロケールが見つからない場合でも、 PYTHONUTF8 はレガシーASCIIベースのロケールでデフォルトでアクティブ化されることに注意してください。 インタプリタがシステムインターフェイスに
UTF-8
ではなくASCII
を使用するように強制するには、両方の機能を無効にする必要があります。バージョン3.7の新機能:詳細については、 PEP 538 を参照してください。
- PYTHONDEVMODE
この環境変数が空でない文字列に設定されている場合は、CPythonの「開発モード」を有効にします。 -X
dev
オプションを参照してください。バージョン3.7の新機能。
- PYTHONUTF8
1
に設定すると、インタプリタのUTF-8モードが有効になります。このモードでは、現在のロケール設定に関係なく、UTF-8
がシステムインターフェイスのテキストエンコーディングとして使用されます。この意味は:
sys.getfilesystemencoding()は
'UTF-8'
を返します(ロケールエンコーディングは無視されます)。locale.getpreferredencoding()は
'UTF-8'
を返します(ロケールエンコーディングは無視され、関数のdo_setlocale
パラメーターは効果がありません)。sys.stdin 、 sys.stdout 、および sys.stderr はすべて、テキストエンコーディングとしてUTF-8を使用し、
surrogateescape
]エラーハンドラーが sys.stdin および sys.stdout に対して有効になっている( sys.stderr は引き続きbackslashreplace
を使用しますデフォルトのロケール認識モードで)
これらの低レベルAPIの変更の結果として、他の高レベルAPIも異なるデフォルトの動作を示します。
コマンドライン引数、環境変数、およびファイル名は、UTF-8エンコーディングを使用してテキストにデコードされます。
os.fsdecode()および os.fsencode()はUTF-8エンコーディングを使用します。
open()、 io.open()、および codecs.open()は、デフォルトでUTF-8エンコーディングを使用します。 ただし、デフォルトでは厳密なエラーハンドラーを使用しているため、バイナリファイルをテキストモードで開こうとすると、意味のないデータが生成されるのではなく、例外が発生する可能性があります。
UTF-8モードの標準ストリーム設定は、 PYTHONIOENCODING で上書きできることに注意してください(デフォルトのロケール認識モードの場合と同じです)。
0
に設定すると、インタープリターはデフォルトのロケール認識モードで実行されます。他の空でない文字列を設定すると、インタプリタの初期化中にエラーが発生します。
この環境変数がまったく設定されていない場合、インタープリターはデフォルトで現在のロケール設定を使用します。現在のロケールがレガシーASCIIベースのロケールとして識別されない限り( で説明) PYTHONCOERCECLOCALE )、およびロケール強制が無効になっているか、失敗します。 このようなレガシーロケールでは、明示的に指示されない限り、インタプリタはデフォルトでUTF-8モードを有効にします。
-X
utf8
オプションとしてもご利用いただけます。バージョン3.7の新機能:詳細については、 PEP 540 を参照してください。
1.2.1。 デバッグモード変数
これらの変数の設定は、Pythonのデバッグビルドでのみ効果があります。
- PYTHONTHREADDEBUG
設定されている場合、Pythonはスレッドデバッグ情報を出力します。
--with-pydebug
ビルドオプションで構成されたPythonが必要です。
- PYTHONDUMPREFS
設定されている場合、Pythonは、インタープリターをシャットダウンした後もオブジェクトと参照カウントをダンプします。
--with-trace-refs
ビルドオプションで構成されたPythonが必要です。