1.1。 コマンドラインと環境
CPythonインタープリターは、コマンドラインと環境をスキャンしてさまざまな設定を探します。
1.1。 コマンドライン
Pythonを呼び出すときは、次のオプションのいずれかを指定できます。
python [-bBdEiOQsRStuUvVWxX3?] [-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
)を指定しないでください。module-name
は有効なPythonモジュール名である必要がありますが、実装が常にこれを強制するとは限りません(例: ハイフンを含む名前を使用できる場合があります)。パッケージ名も許可されます。 通常のモジュールの代わりにパッケージ名を指定すると、インタプリタはメインモジュールとして
<pkg>.__main__
を実行します。 この動作は、スクリプト引数としてインタプリタに渡されるディレクトリとzipファイルの処理に意図的に似ています。ノート
このオプションは、Pythonモジュールファイルがないため、Cで記述された組み込みモジュールおよび拡張モジュールでは使用できません。 ただし、元のソースファイルが利用できない場合でも、プリコンパイルされたモジュールには引き続き使用できます。
このオプションを指定すると、 sys.argv の最初の要素がモジュールファイルへのフルパスになります。 -c オプションと同様に、現在のディレクトリが sys.path の先頭に追加されます。
多くの標準ライブラリモジュールには、スクリプトとして実行時に呼び出されるコードが含まれています。 例は timeit モジュールです。
python -mtimeit -s 'setup here' 'benchmarked code here' python -mtimeit -h # for details
バージョン2.4の新機能。
バージョン2.5で変更:指定されたモジュールをパッケージ内に配置できるようになりました。
バージョン2.7で変更:パッケージ名を指定して
__main__
サブモジュールを実行します。 モジュールの検索中にsys.argv [0]が"-m"
に設定されるようになりました(以前は"-c"
に誤って設定されていました)
- -
標準入力( 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]モジュール。バージョン2.5で変更:最上位に
__main__.py
ファイルを含むディレクトリとzipファイルは、有効なPythonスクリプトと見なされるようになりました。
インターフェイスオプションが指定されていない場合、 -i が暗黙指定され、sys.argv[0]
は空の文字列(""
)であり、現在のディレクトリがの先頭に追加されます。 sys.path 。
1.1.2。 一般的なオプション
- -?
-h
--help すべてのコマンドラインオプションの簡単な説明を印刷します。
バージョン2.5で変更:
--help
バリアント。
- -V
--version Pythonのバージョン番号を出力して終了します。 出力例は次のとおりです。
Python 2.5.1
バージョン2.5で変更:
--version
バリアント。
1.1.3。 その他のオプション
- -b
unicode を bytearray と比較するときに警告を発行します。 オプションを2回指定するとエラーが発生します(
-bb
)。対応するPython3.xフラグとは異なり、これは str と unicode の比較に対して not 警告を発することに注意してください。 代わりに、
str
インスタンスは暗黙的にunicode
にデコードされ、Unicode比較が使用されます。バージョン2.6の新機能。
- -B
指定された場合、Pythonはソースモジュールのインポート時に
.pyc
または.pyo
ファイルを書き込もうとしません。 PYTHONDONTWRITEBYTECODE も参照してください。バージョン2.6の新機能。
- -d
- パーサーのデバッグ出力をオンにします(コンパイルオプションに応じて、ウィザードのみ)。 PYTHONDEBUG も参照してください。
- -E
すべての
PYTHON*
環境変数を無視します。 PYTHONPATH および PYTHONHOME 、設定されている可能性があります。バージョン2.2の新機能。
- -i
スクリプトが最初の引数として渡されるか、 -c オプションが使用される場合、 sys.stdin がターミナル。 PYTHONSTARTUP ファイルが読み込まれません。
これは、スクリプトが例外を発生させたときにグローバル変数またはスタックトレースを検査するのに役立ちます。 PYTHONINSPECT も参照してください。
- -O
- 基本的な最適化をオンにします。 これにより、コンパイルされた( bytecode )ファイルのファイル名拡張子が
.pyc
から.pyo
に変更されます。 PYTHONOPTIMIZE も参照してください。
- -OO
- -O の最適化に加えて、docstringを破棄します。
- -Q <arg>
分割制御。 引数は次のいずれかである必要があります。
old
int / intとlong / longを除算すると、intまたはlongが返されます( default )
new
新しい分割セマンティクス、つまり int / intとlong / longを除算すると、floatが返されます
warn
int / intおよびlong / longの警告を伴う古い分割セマンティクス
warnall
除算演算子のすべての使用に対する警告を伴う古い除算セマンティクス
- -R
ハッシュランダム化をオンにして、str、bytes、およびdatetimeオブジェクトの
__hash__()
値が、予測できないランダム値で「ソルト」されるようにします。 それらは個々のPythonプロセス内で一定のままですが、Pythonを繰り返し呼び出す間で予測することはできません。これは、dict構造の最悪の場合のパフォーマンスであるO(n ^ 2)の複雑さを悪用する、慎重に選択された入力によって引き起こされるサービス拒否に対する保護を提供することを目的としています。 詳細については、 http://www.ocert.org/advisories/ocert-2011-003.htmlを参照してください。
ハッシュ値を変更すると、キーがdictから取得される順序に影響します。 Pythonはこの順序について保証していませんが(通常、32ビットビルドと64ビットビルドの間で異なります)、十分な実世界のコードは、この保証されていない動作に暗黙的に依存しているため、デフォルトでランダム化が無効になっています。
PYTHONHASHSEED も参照してください。
バージョン2.6.8の新機能。
- -s
ユーザーサイトパッケージディレクトリを sys.path に追加しないでください。
バージョン2.6の新機能。
も参照してください
PEP 370 –ユーザーごとのサイト-パッケージディレクトリ
- -t
- ソースファイルが、スペースで表現されたタブの価値に依存するようにインデントのためにタブとスペースを混在させた場合に警告を発行します。 オプションを2回指定するとエラーが発生します(
-tt
)。
- -u
stdin、stdout、およびstderrを完全にバッファリング解除するように強制します。 重要なシステムでは、stdin、stdout、stderrもバイナリモードにします。
file.readlines()およびファイルオブジェクト(
for line in sys.stdin
)には、このオプションの影響を受けない内部バッファリングがあることに注意してください。 これを回避するには、while 1:
ループ内で file.readline()を使用する必要があります。PYTHONUNBUFFERED も参照してください。
- -v
- モジュールが初期化されるたびにメッセージを出力し、モジュールがロードされた場所(ファイル名または組み込みモジュール)を示します。 2回指定すると(
-vv
)、モジュールの検索時にチェックされるファイルごとにメッセージを出力します。 終了時のモジュールのクリーンアップに関する情報も提供します。 PYTHONVERBOSE も参照してください。
- -W arg
警告制御。 Pythonの警告機構は、デフォルトで警告メッセージを sys.stderr に出力します。 一般的な警告メッセージの形式は次のとおりです。
file:line: category: message
デフォルトでは、各警告は、それが発生するソース行ごとに1回出力されます。 このオプションは、警告が印刷される頻度を制御します。
複数の -W オプションを指定できます。 警告が複数のオプションに一致する場合、最後に一致したオプションのアクションが実行されます。 無効な -W オプションは無視されます(ただし、最初の警告が発行されると、無効なオプションに関する警告メッセージが出力されます)。
Python 2.7以降、
DeprecationWarning
とその子孫はデフォルトで無視されます。-Wd
オプションを使用して、それらを再度有効にすることができます。警告は、 warnings モジュールを使用してPythonプログラム内から制御することもできます。
引数の最も単純な形式は、次のアクション文字列(または一意の省略形)のいずれかです。
ignore
すべての警告を無視します。
default
デフォルトの動作を明示的に要求します(各警告をソース行ごとに1回出力します)。
all
警告が発生するたびに出力します(ループ内など、同じソース行に対して警告が繰り返しトリガーされると、多くのメッセージが生成される可能性があります)。
module
各モジュールで最初に発生したときにのみ、各警告を出力します。
once
プログラムで最初に発生したときにのみ、各警告を出力します。
error
警告メッセージを出力する代わりに、例外を発生させます。
引数の完全な形式は次のとおりです。
action:message:category:module:line
ここで、 action は上記で説明したとおりですが、残りのフィールドに一致するメッセージにのみ適用されます。 空のフィールドはすべての値に一致します。 末尾の空のフィールドは省略できます。 message フィールドは、印刷された警告メッセージの先頭と一致します。 この一致では大文字と小文字は区別されません。 category フィールドは警告カテゴリと一致します。 これはクラス名である必要があります。 一致は、メッセージの実際の警告カテゴリが指定された警告カテゴリのサブクラスであるかどうかをテストします。 完全なクラス名を指定する必要があります。 module フィールドは、(完全修飾された)モジュール名と一致します。 この一致では大文字と小文字が区別されます。 line フィールドは行番号と一致します。ここで、ゼロはすべての行番号と一致するため、省略された行番号と同等です。
- -x
- ソースの最初の行をスキップして、
#!cmd
の非Unix形式の使用を許可します。 これは、DOS固有のハッキングのみを目的としています。
- -3
Python 3で削除または大幅に変更され、静的コード分析を使用して検出できない機能に対して
DeprecationWarning
を発行することにより、Python3.xの非互換性の可能性について警告します。バージョン2.6の新機能。
詳細については、 Python2コードのPython3への移植を参照してください。
1.1.4。 使用してはいけないオプション
- -J
- Jython で使用するために予約されています。
- -U
すべての文字列リテラルをグローバルにUnicodeに変換します。 おそらくあなたの世界を壊してしまうので、このオプションを使いたくはありません。 また、通常とは異なるマジックナンバーの
.pyc
ファイルを生成します。 代わりに、次を使用して、モジュールごとにUnicodeリテラルを有効にできます。from __future__ import unicode_literals
ファイルの先頭にあります。 詳細については、 __ future __ を参照してください。
- -X
- 独自の目的で使用するPythonの代替実装用に予約されています。
1.2。 環境変数
これらの環境変数はPythonの動作に影響を与え、コマンドラインが-E以外に切り替わる前に処理されます。 コマンドラインスイッチは、競合がある場合に環境変数をオーバーライドするのが通例です。
- 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 を変更することもできます。
- PYTHONY2K
- これを空でない文字列に設定すると、 time モジュールで文字列として指定された日付に4桁の年が含まれるようになります。そうでない場合、2桁の年は time [で説明されているルールに基づいて変換されます。 X207X]モジュールのドキュメント。
- PYTHONINSPECT
これが空でない文字列に設定されている場合は、 -i オプションを指定するのと同じです。
この変数は、 os.environ を使用してPythonコードで変更し、プログラムの終了時に検査モードを強制することもできます。
- PYTHONUNBUFFERED
- これが空でない文字列に設定されている場合は、 -u オプションを指定するのと同じです。
- PYTHONCASEOK
- これが設定されている場合、Pythonは import ステートメントの大文字と小文字を無視します。 これは、Windows、OS X、OS / 2、およびRiscOSでのみ機能します。
- PYTHONDONTWRITEBYTECODE
これが設定されている場合、Pythonはソースモジュールのインポート時に
.pyc
または.pyo
ファイルを書き込もうとしません。 これは、 -B オプションを指定するのと同じです。バージョン2.6の新機能。
- PYTHONHASHSEED
この変数が
random
に設定されている場合、効果は -R オプションを指定するのと同じです。ランダムな値を使用して、str、bytes、およびdatetimeオブジェクトのハッシュをシードします。PYTHONHASHSEED が整数値に設定されている場合、ハッシュランダム化の対象となるタイプのhash()を生成するための固定シードとして使用されます。
その目的は、インタープリター自体のセルフテストなど、繰り返し可能なハッシュを許可すること、またはPythonプロセスのクラスターがハッシュ値を共有できるようにすることです。
整数は、[0,4294967295]の範囲の10進数である必要があります。 値0を指定すると、ハッシュランダム化が無効になっている場合と同じハッシュ値になります。
バージョン2.6.8の新機能。
- PYTHONIOENCODING
構文
encodingname:errorhandler
で、stdin / stdout / stderrに使用されるエンコーディングをオーバーライドします。:errorhandler
の部分はオプションであり、 str.encode()と同じ意味です。バージョン2.6の新機能。
- PYTHONNOUSERSITE
これが設定されている場合、Pythonはユーザーサイトパッケージディレクトリを sys.path に追加しません。
バージョン2.6の新機能。
も参照してください
PEP 370 –ユーザーごとのサイト-パッケージディレクトリ
- PYTHONUSERBASE
ユーザーベースディレクトリを定義します。これは、
python setup.py install --user
のユーザーサイトパッケージディレクトリおよび Distutilsインストールパスのパスを計算するために使用されます。バージョン2.6の新機能。
も参照してください
PEP 370 –ユーザーごとのサイト-パッケージディレクトリ
- PYTHONEXECUTABLE
- この環境変数が設定されている場合、
sys.argv[0]
は、Cランタイムを通じて取得された値ではなく、その値に設定されます。 Mac OSXでのみ動作します。
- PYTHONHTTPSVERIFY
この環境変数が特に
0
に設定されている場合、 ssl が最初のときに、enable=False
を使用して ssl._https_verify_certificates()を暗黙的に呼び出すことと同じです。インポートされました。詳細については、 ssl ._ https_verify_certificates()のドキュメントを参照してください。
バージョン2.7.12の新機能。
1.2.1。 デバッグモード変数
これらの変数の設定は、Pythonのデバッグビルド、つまりPythonが--with-pydebug
ビルドオプションで構成されている場合にのみ効果があります。
- PYTHONTHREADDEBUG
設定されている場合、Pythonはスレッドデバッグ情報を出力します。
バージョン2.6で変更:以前は、この変数は
THREADDEBUG
と呼ばれていました。
- PYTHONDUMPREFS
- 設定されている場合、Pythonは、インタープリターをシャットダウンした後もオブジェクトと参照カウントをダンプします。
- PYTHONMALLOCSTATS
- 設定されている場合、Pythonは、新しいオブジェクトアリーナが作成されるたびに、およびシャットダウン時にメモリ割り当て統計を出力します。
- PYTHONSHOWALLOCCOUNT
セットされ、Pythonが
COUNT_ALLOCS
を定義してコンパイルされた場合、Pythonはシャットダウン時に割り当てカウントをstderrにダンプします。バージョン2.7.15の新機能。
- PYTHONSHOWREFCOUNT
設定されている場合、Pythonは、プログラムが終了したとき、または対話型インタープリターの各ステートメントの後に、合計参照カウントを出力します。
バージョン2.7.15の新機能。