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

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

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

も参照してください

runpy.run_module()

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

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

バージョン2.4の新機能。

バージョン2.5で変更:指定されたモジュールをパッケージ内に配置できるようになりました。

バージョン2.7で変更:パッケージ名を指定して__main__サブモジュールを実行します。 モジュールの検索中にsys.argv [0]が"-m"に設定されるようになりました(以前は"-c"に誤って設定されていました)

-

標準入力( sys.stdin )からコマンドを読み取ります。 標準入力が端子の場合、 -i が暗示されます。

このオプションを指定すると、 sys.argv の最初の要素は"-"になり、現在のディレクトリが sys.path の先頭に追加されます。

も参照してください

runpy.run_path()

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


<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

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

対応するPython3.xフラグとは異なり、これは strunicode の比較に対して 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

除算演算子のすべての使用に対する警告を伴う古い除算セマンティクス

も参照してください

Tools/scripts/fixdiv.py

warnallを使用する場合

PEP 238 –除算演算子の変更

-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 –ユーザーごとのサイト-パッケージディレクトリ

-S
モジュール site のインポートと、それに伴う sys.path のサイト依存の操作を無効にします。
-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 フィールドは行番号と一致します。ここで、ゼロはすべての行番号と一致するため、省略された行番号と同等です。

も参照してください

警告 –警告モジュール

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

PYTHONWARNINGS

-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/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.ps1 および sys.ps2 を変更することもできます。
PYTHONY2K
これを空でない文字列に設定すると、 time モジュールで文字列として指定された日付に4桁の年が含まれるようになります。そうでない場合、2桁の年は time [で説明されているルールに基づいて変換されます。 X207X]モジュールのドキュメント。
PYTHONOPTIMIZE
これが空でない文字列に設定されている場合は、 -O オプションを指定するのと同じです。 整数に設定すると、 -O を複数回指定するのと同じです。
PYTHONDEBUG
これが空でない文字列に設定されている場合は、 -d オプションを指定するのと同じです。 整数に設定すると、 -d を複数回指定するのと同じです。
PYTHONINSPECT

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

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

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