CPython インタプリタはコマンドラインと環境を読み取って様々な設定を行ないます。
CPython implementation detail: 他の実装のコマンドラインスキームは CPython とは異なります。 さらなる情報は 別のPythonの実装 を参照してください。
Python を起動するとき、以下のうち任意のオプションを指定できます。
python [-BdEiOQsStuUvVWxX3?] [-c command | -m module-name | script | - ] [args]
もちろん、もっとも一般的な利用方法は、シンプルにスクリプトを実行するものです。
python myscript.py
インタプリタのインターフェイスは UNIX シェルに似ていますが、 より多くのの実行方法を提供しています。
非インタラクティブモードでは、入力の全体が実行前にパースされます。
インタプリタによって消費されるオプションリストが終了したあと、継続する全ての 引数は sys.argv に渡ります。 – ただし、添字 0 の先頭要素(sys.argv[0]) はプログラムのソース自体を示す文字列です。
command 内の Python コードを実行します。 command は改行によって区切られた1行以上の文です。 通常のモジュールのコードと同じく、行頭の空白文字は意味を持ちます。
このオプションが指定された場合、 sys.argv の先頭要素は "-c" になり、 カレントディレクトリが sys.path の先頭に追加されます。 (そのディレクトリにあるモジュールをトップレベルモジュールとして import することが可能になります。)
sys.path から指定されたモジュール名のモジュールを探し、その内容を __main__ モジュールとして実行します。
引数は module 名なので、拡張子 (.py) を含めてはいけません。 module-name は有効な Python のモジュール名であるべきですが、実装がそれを 矯正しているとは限りません。 (例えば、ハイフンを名前に含める事を許可するかも しれません。)
ノート
このオプションはビルトインモジュールや C で書かれた拡張モジュールには 利用できません。 Python モジュールファイルを持っていないからです。 しかし、コンパイル済みのモジュールは、たとえ元のソースファイルがなくても 利用可能です。
このオプションが指定された場合、 sys.argv の先頭要素はモジュールファイルの フルパスになります。 -c オプションのように、カレントディレクトリが sys.path の先頭に追加されます。
Many standard library modules contain code that is invoked on their execution as a script. An example is the timeit module:: 多くの標準ライブラリモジュールが、スクリプトとして実行された時のコードを持っています。 例えば、 timeit モジュールは次のように実行可能です。
python -mtimeit -s 'setup here' 'benchmarked code here'
python -mtimeit -h # for details
バージョン 2.4 で追加.
バージョン 2.5 で変更: パッケージ内のモジュールを指定できるようになりました。
標準入力 (sys.stdin) からコマンドを読み込みます。 標準入力がターミナルだった場合、 -i オプションを含みます。
このオプションが指定された場合、 sys.argv の最初の要素は "-" で、カレントディレクトリが sys.path の先頭に追加されます。
script 内の Python コードを実行します。 script は、 Python ファイル、 __main__.py ファイルを含むディレクトリ、 __main__.py ファイルを含む zip ファイルのいづれかの、ファイルシステム上の (絶対あるいは相対)パスでなければなりません。
このオプションが指定された場合、 sys.argv の先頭要素は、 コマンドラインで指定されたスクリプト名になります。
スクリプト名が Python ファイルを直接指定していた場合、そのファイルを 含むディレクトリが sys.path の先頭に追加され、そのファイルは __main__ モジュールとして実行されます。
スクリプト名がディレクトリか zip ファイルを指定していた場合、 スクリプト名が sys.path に追加され、その中の __main__.py ファイルが __main__ モジュールとして実行されます。
バージョン 2.5 で変更: トップレベルに __main__.py ファイルを持つディレクトリや zip ファイルが 有効な Python スクリプトとなりました。
インターフェイスオプションが与えられなかった場合、 -i が暗黙的に指定され、 sys.argv[0] は空白文字列 ("")で、カレントディレクトリが sys.path の先頭に追加されます。
参考
Python は import したソースモジュールの .pyc や .pyo ファイルの 作成を試みません。 PYTHONDONTWRITEBYTECODE 環境変数も参照してください。
バージョン 2.6 で追加.
パーサーのデバッグ出力を有効にします。(魔法使い専用です。コンパイルオプションに 依存します)。 PYTHONDEBUG も参照してください。
全ての PYTHON* 環境変数を無視します。 例えば、 PYTHONPATH と PYTHONHOME などです。
バージョン 2.2 で追加.
最初の引数にスクリプトが指定された場合や -c オプションが利用された場合、 sys.stdin がターミナルに出力されない場合も含めて、 スクリプトかコマンドを実行した後にインタラクティブモードに入ります。 PYTHONSTARTUP ファイルは読み込みません。
このオプションはグローバル変数や、スクリプトが例外を発生させるときにその スタックトレースを調べるのに便利です。 PYTHONINSPECT も参照してください。
基本的な最適化を有効にします。 コンパイル済み (bytecode) ファイルの拡張子を .pyc から .pyo に変更します。 PYTHONOPTIMIZE も参照してください。
除算制御。引数は以下のうち1つでなければなりません:
ソースファイルが、タブ幅に依存して意味が変わるような方法でタブ文字とスペースを 混ぜて含んでいる場合に警告を発生させます。このオプションを2重にする (-tt) とエラーになります。
stdin, stdout, stderr のバッファを強制的に無効にします。 関係するシステムでは、 stdin, stdout, stderr をバイナリモードにします。
file.readlines() や ファイルオブジェクト (for line in sys.stdin) はこのオプションに影響されない内部バッファリングをしています。 これを回避したい場合は、 while 1: ループの中で file.readline() します。
PYTHONUNBUFFERED も参照してください。
モジュールが初期化されるたびに、それがどこ(ファイル名やビルトインモジュール) からロードされたのかを示すメッセージを表示します。 2重に指定された場合(-vv)は、モジュールを検索するときにチェックされた 各ファイルに対してメッセージを表示します。また、終了時のモジュールクリーンアップに 関する情報も提供します。 PYTHONVERBOSE も参照してください。
警告制御。 Python の警告機構はデフォルトでは警告メッセージを sys.stderr に表示します。典型的な警告メッセージは次の形をしています:
file:line: category: message
デフォルトでは、各警告は発生したソース業ごとに一度だけ表示されます。 このオプションは、警告をどれくらいの頻度で表示するかを制御します。
複数の -W オプションを指定することができます。警告が1つ以上の オプションとマッチしたときは、最後にマッチしたオプションのアクションが有効になります。 不正な -W オプションは無視されます。(最初の警告が発生したときに、 不正なオプションに対する警告メッセージが表示されます。)
警告は Python プログラムの中から warnings モジュールを利用して 制御することができます。
引数の一番シンプルな形は、以下のアクション文字列(かそのユニークな短縮形) を単体で利用するものです。
引数の完全形は次のようになります:
action:message:category:module:line
ここで、 action は上で説明されたものですが、残りのフィールドにマッチした メッセージにだけ適用されます。空のフィールドは全ての値にマッチします。 空のフィールドの後ろは除外されます。 message フィールドは表示される 警告メッセージの先頭に、大文字小文字を無視してマッチします。 category フィールドは警告カテゴリにマッチします。これはクラス名でなければなりません。 category のマッチは、メッセージの実際の警告カテゴリーが指定された警告 カテゴリーのサブクラスかどうかをチェックします。完全なクラス名を指定しなければ なりません。 module フィールドは、(完全正規形(fully-qualified)の) モジュール名に対して マッチします。このマッチは大文字小文字を区別します。 line フィールドは行番号にマッチします。 0 は全ての行番号にマッチし、 省略した時と同じです。
Unix 以外の形式の #!cmd を使うために、ソースの最初の行をスキップします。 これは、DOS専用のハックのみを目的としています。
ノート
エラーメッセージ内の行番号は -1 されます。
Python 3.x との、 2to3 によって簡単に解決できない 互換性の問題について警告します。以下のものが該当します。
これらを使うと、 DeprecationWarning を発生させます。
バージョン 2.6 で追加.
全ての文字列リテラルを、全部 unicode にします。 このオプションはあなたの世界を破壊してしまうかもしれないので、 このオプションを使おうとしないでください。 これは、通常とは違うマジックナンバーを使って .pyc ファイルを生成します。 ファイルの先頭に次のように書いて、このオプションの代わりにモジュール単位で unicode リテラルを有効にできます。
from __future__ import unicode_literals
詳細は __future__ を参照してください。
別の Python の実装が独自の目的で利用するために予約されています。
以下の環境変数は Python の動作に影響します。
標準 Python ライブラリの場所を変更します。デフォルトでは、ライブラリは prefix/lib/pythonversion と exec_prefix/lib/pythonversion から探されます。ここで、 prefix と exec_prefix は インストール依存のディレクトリで、両方共デフォルトでは /usr/local です。
PYTHONHOME が1つのディレクトリに設定されている場合、その値は prefix と exec_prefix の両方を置き換えます。 それらに別々の値を指定したい場合は、 PYTHONHOME を prefix:exec_prefix のように指定します。
モジュールファイルのデフォルトの検索パスを追加します。 この環境変数のフォーマットはシェルの PATH と同じで、 os.pathsep (Unix ならコロン、 Windows ならセミコロン) で区切られた1つ以上のディレクトリパスです。 存在しないディレクトリは警告なしに無視されます。
通常のディレクトリに加えて、 PYTHONPATH のエントリはピュアPython モジュール(ソース形式でもコンパイルされた形式でも) を含む zip ファイルを 参照することもできます。 拡張モジュールは zip ファイルの中から import することはできません。
デフォルトの検索パスはインストール依存ですが、通常は prefix/lib/pythonversion で始まります。 (上の PYTHONHOME を参照してください。) これは 常に PYTHONPATH に追加されます。
上の インターフェイスオプション で説明されているように、 追加の検索パスディレクトリが PYTHONPATH の手前に追加されます。 検索パスは Python プログラムから sys.path 変数として操作することが できます。
もし読込み可能ファイルの名前であれば、インタラクティブモードで最初のプロンプトを 表示する前にそのファイル内の Python コマンドを実行します。 このファイルはインタラクティブコマンドが実行されるのと同じ名前空間の中で 実行されるので、このファイル内で定義されたり import されたオブジェクトは インタラクティブセッションから制限無しに利用することができます。 このファイルで sys.ps1 と sys.ps2 を変更してプロンプトを 変更することもできます。
この変数に空でない文字列を設定すると、 time モジュールが 文字列で指定される日付に4桁の年を含むことを要求するようになります。 そうでなければ、2桁の年は time モジュールのドキュメントに書かれている ルールで変換されます。
この変数に空でない文字列を設定すると、 -i オプションを指定したのと同じになります。
この変数は Python コードから os.environ を使って変更して、 プログラム終了時のインスペクトモードを強制することができます。
この環境変数が設定されていると、 Python はソースモジュールの import 時に .pyc, .pyo ファイルを生成しません。
バージョン 2.6 で追加.
stdin/stdout/stderr のエンコーディングを強制します。 シンタックスは encodingname:errorhandler です。 :errorhandler の部分はオプションで、 str.encode() の引数と同じ意味です。
バージョン 2.6 で追加.
If this is set, Python won’t add the user site directory to sys.path この環境変数が設定されている場合、 Python はユーザー site ディレクトリを sys.path に追加しません。
バージョン 2.6 で追加.
参考
PEP 370 – Per user site-packages directory
ユーザー site ディレクトリのベースディレクトリを設定します。
バージョン 2.6 で追加.
参考
PEP 370 – Per user site-packages directory
この環境変数が設定されていると、 sys.argv[0] に、 C ランタイムから 取得した値の代わりにこの環境変数の値が設定されます。 Mac OS X でのみ動作します。
以下の環境変数は、 --with-pydebug ビルドオプションを指定して 構成されたデバッグビルド版の Python でのみ効果があります。
設定された場合、 Python はスレッドデバッグ情報を表示します。
バージョン 2.6 で変更: 以前は、この変数は THREADDEBUG という名前でした。
設定された場合、 Python はインタプリタのシャットダウン後に残っている オブジェクトとリファレンスカウントをダンプします。
設定された場合、 Python は、新しいオブジェクトアリーナを作成するときと、 シャットダウン時に、メモリアロケーション統計情報を表示します。