1. コマンドラインと環境—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/3.6/using/cmdline
移動先:案内検索

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

も参照してください

runpy.run_module()

Pythonコードで直接利用できる同等の機能

PEP 338 –モジュールをスクリプトとして実行

バージョン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]モジュール。

も参照してください

runpy.run_path()

Pythonコードで直接利用できる同等の機能


インターフェイスオプションが指定されていない場合、 -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

bytes または bytearraystr または bytesint と比較するときに警告を発行します。 オプションを2回指定するとエラーが発生します(-bb)。

バージョン3.5で変更: バイトint の比較に影響します。

-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 フィールドは行番号と一致します。ここで、ゼロはすべての行番号と一致するため、省略された行番号と同等です。

も参照してください

警告 –警告モジュール

PEP 230 –警告フレームワーク

PYTHONWARNINGS

-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.1.4。 使用してはいけないオプション

-J
Jython で使用するために予約されています。


1.2。 環境変数

これらの環境変数はPythonの動作に影響を与え、コマンドラインが-Eまたは-I以外に切り替わる前に処理されます。 コマンドラインスイッチは、競合がある場合に環境変数をオーバーライドするのが通例です。

PYTHONHOME

標準のPythonライブラリの場所を変更します。 デフォルトでは、ライブラリはprefix/lib/pythonversionexec_prefix/lib/pythonversionで検索されます。ここで、prefixexec_prefixはインストールに依存するディレクトリで、どちらもデフォルトで/usr/localになります。 ]。

PYTHONHOME が単一のディレクトリに設定されている場合、その値はprefixexec_prefixの両方を置き換えます。 これらに異なる値を指定するには、 PYTHONHOMEprefix: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.ps1sys.ps2 およびフック sys .__ Interactivehook __ を変更することもできます。
PYTHONOPTIMIZE
これが空でない文字列に設定されている場合は、 -O オプションを指定するのと同じです。 整数に設定すると、 -O を複数回指定するのと同じです。
PYTHONDEBUG
これが空でない文字列に設定されている場合は、 -d オプションを指定するのと同じです。 整数に設定すると、 -d を複数回指定するのと同じです。
PYTHONINSPECT

これが空でない文字列に設定されている場合は、 -i オプションを指定するのと同じです。

この変数は、 os.environ を使用してPythonコードで変更し、プログラムの終了時に検査モードを強制することもできます。

PYTHONUNBUFFERED
これが空でない文字列に設定されている場合は、 -u オプションを指定するのと同じです。
PYTHONVERBOSE
これが空でない文字列に設定されている場合は、 -v オプションを指定するのと同じです。 整数に設定すると、 -v を複数回指定するのと同じです。
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でのみ動作します。
PYTHONWARNINGS
これは、 -W オプションと同等です。 カンマ区切りの文字列に設定すると、 -W を複数回指定するのと同じです。
PYTHONFAULTHANDLER

この環境変数が空でない文字列に設定されている場合、起動時に faulthandler.enable()が呼び出されます。SIGSEGVSIGFPESIGABRTSIGBUS、およびSIGILLは、Pythonトレースバックをダンプするように通知します。 これは、 -X faulthandlerオプションと同等です。

バージョン3.3の新機能。

PYTHONTRACEMALLOC

この環境変数が空でない文字列に設定されている場合は、 tracemalloc モジュールを使用してPythonメモリ割り当てのトレースを開始します。 変数の値は、トレースのトレースバックに格納されるフレームの最大数です。 たとえば、PYTHONTRACEMALLOC=1は最新のフレームのみを格納します。 詳細については、 tracemalloc.start()を参照してください。

バージョン3.4の新機能。

PYTHONASYNCIODEBUG

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

バージョン3.4の新機能。

PYTHONMALLOC

Pythonメモリアロケータを設定するか、デバッグフックをインストールします。

Pythonで使用されるメモリアロケータのファミリを設定します。

  • malloc:すべてのドメイン(PYMEM_DOMAIN_RAWPYMEM_DOMAIN_MEMPYMEM_DOMAIN_OBJ)に対してCライブラリのmalloc()関数を使用します。

  • pymallocPYMEM_DOMAIN_MEMおよびPYMEM_DOMAIN_OBJドメインには pymallocアロケータを使用し、PYMEM_DOMAIN_RAWにはmalloc()関数を使用します。ドメイン。

デバッグフックをインストールします。

  • debug:デフォルトのメモリアロケータの上にデバッグフックをインストールします

  • malloc_debugmallocと同じですが、デバッグフックもインストールします

  • pymalloc_debugpymallocと同じですが、デバッグフックもインストールします

Pythonがリリースモードでコンパイルされている場合、デフォルトはpymallocです。 デバッグモードでコンパイルすると、デフォルトはpymalloc_debugになり、デバッグフックが自動的に使用されます。

Pythonがpymallocをサポートせずに構成されている場合、pymallocpymalloc_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は、インタープリターをシャットダウンした後もオブジェクトと参照カウントをダンプします。