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 の先頭に追加されます。多くの標準ライブラリモジュールには、スクリプトとして実行時に呼び出されるコードが含まれています。 例は timeit モジュールです。
python -mtimeit -s 'setup here' 'benchmarked code here' python -mtimeit -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.argv[0]
は空の文字列(""
)であり、現在のディレクトリがの先頭に追加されます。 sys.path 。 また、プラットフォームで利用可能な場合、タブ補完と履歴編集が自動的に有効になります( Readline構成を参照)。
バージョン3.4で変更:タブ補完と履歴編集の自動有効化。
1.1.2。 一般的なオプション
- -?
-h
--help
- すべてのコマンドラインオプションの簡単な説明を印刷します。
- -V
--version Pythonのバージョン番号を出力して終了します。 出力例は次のとおりです。
Python 3.6.0b2+
2回指定すると、次のようなビルドに関する詳細情報を出力します。
Python 3.6.0b2+ (3.6:84a3c5003510+, Oct 26 2016, 02:33:55) [GCC 6.2.0 20161005]
バージョン3.6の新機能:
-VV
オプション。
1.1.3。 その他のオプション
- -B
- 指定された場合、Pythonはソースモジュールのインポート時に
.pyc
ファイルを書き込もうとしません。 PYTHONDONTWRITEBYTECODE も参照してください。
- -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
互換性のために保持されます。 Python 3.3以降では、ハッシュランダム化はデフォルトでオンになっています。
以前のバージョンのPythonでは、このオプションはハッシュランダム化をオンにするため、str、bytes、およびdatetimeの
__hash__()
値は、予測できないランダム値で「ソルト」されます。 それらは個々のPythonプロセス内で一定のままですが、Pythonを繰り返し呼び出す間で予測することはできません。ハッシュのランダム化は、dict構造の最悪の場合のパフォーマンスであるO(n ^ 2)の複雑さを悪用する、慎重に選択された入力によって引き起こされるサービス拒否に対する保護を提供することを目的としています。 詳細については、 http://www.ocert.org/advisories/ocert-2011-003.htmlを参照してください。
PYTHONHASHSEED を使用すると、ハッシュシードシークレットに固定値を設定できます。
バージョン3.2.3の新機能。
- -s
ユーザーサイトパッケージディレクトリを sys.path に追加しないでください。
も参照してください
PEP 370 –ユーザーごとのサイト-パッケージディレクトリ
- -S
- モジュール site のインポートと、それに伴う sys.path のサイト依存の操作を無効にします。 また、 site が後で明示的にインポートされる場合は、これらの操作を無効にします(トリガーする場合は、 site.main()を呼び出します)。
- -u
stdoutストリームとstderrストリームのバイナリレイヤー(
buffer
属性として使用可能)を強制的にバッファリング解除します。 テキストI / Oレイヤーは、コンソールに書き込む場合は引き続き行バッファーに入れられ、非対話型ファイルにリダイレクトされる場合はブロックバッファーに入れられます。PYTHONUNBUFFERED も参照してください。
- -v
- モジュールが初期化されるたびにメッセージを出力し、モジュールがロードされた場所(ファイル名または組み込みモジュール)を示します。 2回指定すると(
-vv
)、モジュールの検索時にチェックされるファイルごとにメッセージを出力します。 終了時のモジュールのクリーンアップに関する情報も提供します。 PYTHONVERBOSE も参照してください。
- -W arg
警告制御。 Pythonの警告機構は、デフォルトで警告メッセージを sys.stderr に出力します。 一般的な警告メッセージの形式は次のとおりです。
file:line: category: message
デフォルトでは、各警告は、それが発生するソース行ごとに1回出力されます。 このオプションは、警告が印刷される頻度を制御します。
複数の -W オプションを指定できます。 警告が複数のオプションに一致する場合、最後に一致したオプションのアクションが実行されます。 無効な -W オプションは無視されます(ただし、最初の警告が発行されると、無効なオプションに関する警告メッセージが出力されます)。
警告は、 warnings モジュールを使用してPythonプログラム内から制御することもできます。
引数の最も単純な形式は、次のアクション文字列(または一意の省略形)のいずれかです。
ignore
すべての警告を無視します。
default
デフォルトの動作を明示的に要求します(各警告をソース行ごとに1回出力します)。
all
警告が発生するたびに出力します(ループ内など、同じソース行に対して警告が繰り返しトリガーされると、多くのメッセージが生成される可能性があります)。
module
各モジュールで最初に発生したときにのみ、各警告を出力します。
once
プログラムで最初に発生したときにのみ、各警告を出力します。
error
警告メッセージを出力する代わりに、例外を発生させます。
引数の完全な形式は次のとおりです。
action:message:category:module:line
ここで、 action は上記で説明したとおりですが、残りのフィールドに一致するメッセージにのみ適用されます。 空のフィールドはすべての値に一致します。 末尾の空のフィールドは省略できます。 message フィールドは、印刷された警告メッセージの先頭と一致します。 この一致では大文字と小文字は区別されません。 category フィールドは警告カテゴリと一致します。 これはクラス名である必要があります。 一致は、メッセージの実際の警告カテゴリが指定された警告カテゴリのサブクラスであるかどうかをテストします。 完全なクラス名を指定する必要があります。 module フィールドは、(完全修飾された)モジュール名と一致します。 この一致では大文字と小文字が区別されます。 line フィールドは行番号と一致します。ここで、ゼロはすべての行番号と一致するため、省略された行番号と同等です。
- -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
を定義してビルドされた場合にのみ機能します。
また、任意の値を渡し、 sys._xoptions ディクショナリを介してそれらを取得することもできます。
バージョン3.2で変更: -X オプションが追加されました。
バージョン3.3の新機能:
-X faulthandler
オプション。バージョン3.4の新機能:
-X showrefcount
および-X tracemalloc
オプション。バージョン3.6の新機能:
-X showalloccount
オプション。
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 __ を変更することもできます。
- PYTHONINSPECT
これが空でない文字列に設定されている場合は、 -i オプションを指定するのと同じです。
この変数は、 os.environ を使用してPythonコードで変更し、プログラムの終了時に検査モードを強制することもできます。
- PYTHONUNBUFFERED
- これが空でない文字列に設定されている場合は、 -u オプションを指定するのと同じです。
- PYTHONCASEOK
- これが設定されている場合、Pythonは import ステートメントの大文字と小文字を無視します。 これは、WindowsとOSXでのみ機能します。
- PYTHONDONTWRITEBYTECODE
- これが空でない文字列に設定されている場合、Pythonはソースモジュールのインポート時に
.pyc
ファイルを書き込もうとしません。 これは、 -B オプションを指定するのと同じです。
- PYTHONHASHSEED
この変数が
random
に設定または設定されていない場合、ランダムな値を使用して、str、bytes、およびdatetimeオブジェクトのハッシュをシードします。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でのみ動作します。
- PYTHONFAULTHANDLER
この環境変数が空でない文字列に設定されている場合、起動時に faulthandler.enable()が呼び出されます。
SIGSEGV
、SIGFPE
、SIGABRT
、SIGBUS
、およびSIGILL
は、Pythonトレースバックをダンプするように通知します。 これは、 -Xfaulthandler
オプションと同等です。バージョン3.3の新機能。
- PYTHONTRACEMALLOC
この環境変数が空でない文字列に設定されている場合は、 tracemalloc モジュールを使用してPythonメモリ割り当てのトレースを開始します。 変数の値は、トレースのトレースバックに格納されるフレームの最大数です。 たとえば、
PYTHONTRACEMALLOC=1
は最新のフレームのみを格納します。 詳細については、 tracemalloc.start()を参照してください。バージョン3.4の新機能。
- PYTHONMALLOC
Pythonメモリアロケータを設定するか、デバッグフックをインストールします。
Pythonで使用されるメモリアロケータのファミリを設定します。
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
と同じですが、デバッグフックもインストールします
Pythonがリリースモードでコンパイルされている場合、デフォルトは
pymalloc
です。 デバッグモードでコンパイルすると、デフォルトはpymalloc_debug
になり、デバッグフックが自動的に使用されます。Pythonが
pymalloc
をサポートせずに構成されている場合、pymalloc
とpymalloc_debug
は使用できません。デフォルトは、リリースモードではmalloc
、リリースモードではmalloc_debug
です。デバッグモード。Pythonメモリアロケータのデバッグフックについては、 PyMem_SetupDebugHooks()関数を参照してください。
バージョン3.6の新機能。
- PYTHONMALLOCSTATS
空でない文字列に設定すると、Pythonは、新しいpymallocオブジェクトアリーナが作成されるたびに、シャットダウン時に pymallocメモリアロケータの統計を出力します。
PYTHONMALLOC 環境変数を使用してCライブラリの
malloc()
アロケータを強制する場合、またはPythonがpymalloc
なしで構成されている場合、この変数は無視されます。サポート。バージョン3.6で変更:この変数は、リリースモードでコンパイルされたPythonでも使用できるようになりました。 空の文字列に設定しても効果がなくなりました。
- PYTHONLEGACYWINDOWSFSENCODING
空でない文字列に設定すると、デフォルトのファイルシステムエンコーディングおよびエラーモードは、それぞれ「mbcs」および「replace」の3.6より前の値に戻ります。 それ以外の場合は、新しいデフォルトの「utf-8」と「surrogatepass」が使用されます。
これは、 sys._enablelegacywindowsfsencoding()を使用して実行時に有効にすることもできます。
可用性:Windows
バージョン3.6の新機能:詳細については、 PEP 529 を参照してください。
- PYTHONLEGACYWINDOWSSTDIO
空でない文字列に設定されている場合、新しいコンソールリーダーとライターを使用しません。 これは、Unicode文字が、utf-8を使用するのではなく、アクティブなコンソールコードページに従ってエンコードされることを意味します。
この変数は、コンソールバッファーを参照するのではなく、標準ストリームが(ファイルまたはパイプに)リダイレクトされる場合は無視されます。
可用性:Windows
バージョン3.6の新機能。
1.2.1。 デバッグモード変数
これらの変数の設定は、Pythonのデバッグビルド、つまりPythonが--with-pydebug
ビルドオプションで構成されている場合にのみ効果があります。
- PYTHONTHREADDEBUG
- 設定されている場合、Pythonはスレッドデバッグ情報を出力します。
- PYTHONDUMPREFS
- 設定されている場合、Pythonは、インタープリターをシャットダウンした後もオブジェクトと参照カウントをダンプします。