### ナビゲーション

- 索引
- モジュール |
- 次へ |
- 前へ |
- Python 2.7ja1 documentation »
- Python のセットアップと利用 »

# コマンドラインと環境

CPython インタプリタはコマンドラインと環境を読み取って様々な設定を行ないます。

CPython implementation detail: 他の実装のコマンドラインスキームは CPython とは異なります。さらなる情報は 別のPythonの実装 を参照してください。

## コマンドライン

Python を起動するとき、以下のうち任意のオプションを指定できます。

    python [-BdEiOQsStuUvVWxX3?] [-c command | -m module-name | script | - ] [args]

もちろん、もっとも一般的な利用方法は、シンプルにスクリプトを実行するものです。

    python myscript.py

### インターフェイスオプション

インタプリタのインターフェイスは UNIX シェルに似ていますが、より多くのの実行方法を提供しています。

- tty デバイスに接続された標準入力とともに起動された場合、 EOF (end-of-file 文字。 UNIX では Ctrl-D で、Windows では Ctrl-Z, Enter で入力可能) を受け取るまで、コマンドを受け取り、それを実行します。
- ファイル名引数を指定されるか、ファイルを標準入力に渡された場合は、そのファイルから読み込んだスクリプトを実行します。
- ディレクトリ名を引数に受け取ったときは、そのディレクトリから適切な名前のスクリプトファイルを読み込んで実行します。
- `-c コマンド` オプションを利用して起動された場合、 コマンド として渡された Python の文を実行します。 コマンド の部分には改行で区切られた複数行を指定することもできます。行の先頭の空白文字は Python 文の重要要素です！
- `-m モジュール名` として Python モジュールパスにあるモジュールを指定された場合、そのモジュールをスクリプトとして実行します。

非インタラクティブモードでは、入力の全体が実行前にパースされます。

インタプリタによって消費されるオプションリストが終了したあと、継続する全ての引数は `sys.argv` に渡ります。 – ただし、添字 0 の先頭要素(`sys.argv[0]`) はプログラムのソース自体を示す文字列です。

`-c``<command>`

  command 内の Python コードを実行します。 command は改行によって区切られた1行以上の文です。通常のモジュールのコードと同じく、行頭の空白文字は意味を持ちます。

  このオプションが指定された場合、 `sys.argv` の先頭要素は `"-c"` になり、カレントディレクトリが `sys.path` の先頭に追加されます。 (そのディレクトリにあるモジュールをトップレベルモジュールとして import することが可能になります。)

`-m``<module-name>`

  `sys.path` から指定されたモジュール名のモジュールを探し、その内容を `__main__` モジュールとして実行します。

  引数は module 名なので、拡張子 (`.py`) を含めてはいけません。 `module-name` は有効な Python のモジュール名であるべきですが、実装がそれを強制しているとは限りません。 (例えば、ハイフンを名前に含める事を許可するかもしれません。)

  パッケージ名を指定することもできます。通常のモジュールの代わりにパッケージ名を指定された場合、インタープリタは `<pkg>.__main__` をメインモジュールとして実行します。この動作はインタープリタのスクリプト引数としてディレクトリやzipファイルを指定された時の動作と意図的に似せています。

  ノート

  このオプションはビルトインモジュールや C で書かれた拡張モジュールには利用できません。 Python モジュールファイルを持っていないからです。しかし、コンパイル済みのモジュールは、たとえ元のソースファイルがなくても利用可能です。

  このオプションが指定された場合、 `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 – Executing modules as scripts

  バージョン 2.4 で追加.

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

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

`-`

  標準入力 (`sys.stdin`) からコマンドを読み込みます。標準入力がターミナルだった場合、 -i オプションを含みます。

  このオプションが指定された場合、 `sys.argv` の最初の要素は `"-"` で、カレントディレクトリが `sys.path` の先頭に追加されます。

`<script>`

  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` の先頭に追加されます。

参考

インタプリタを起動する

### 一般オプション

`-?`
`-h```
`--help```

  全てのコマンドラインオプションの短い説明を表示します。

  バージョン 2.5 で変更: `--help` 形式

`-V```
`--version```

  Python のバージョン番号を表示して終了します。出力の例:

      Python 2.5.1

  バージョン 2.5 で変更: `--version` 形式

### その他のオプション

`-B```

  Python は import したソースモジュールの `.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 の最適化に加えて、ドキュメンテーション文字列の除去も行ないます。

`-Q``<arg>`

  除算制御。引数は以下のうち1つでなければなりません:

  `old`
    int/int と long/long の除算は、 int か long を返します。 (デフォルト)
  `new`
    新しい除算方式。 int/int や long/long の除算が float を返します。
  `warn`
    古い除算方式で、 int/int や long/long 除算に警告を表示します。
  `warnall`
    古い除算方式で、全ての除算演算子に対して警告を表示します。

  参考

  `Tools/scripts/fixdiv.py` `warnall` を使っています.

  PEP 238 – Changing the division operator

`-s```

  sys.path にユーザー site ディレクトリを追加しません。

  バージョン 2.6 で追加.

  参考

  PEP 370 – Per user site-packages directory

`-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

  デフォルトでは、各警告は発生したソース業ごとに一度だけ表示されます。このオプションは、警告をどれくらいの頻度で表示するかを制御します。

  複数の -W オプションを指定することができます。警告が1つ以上のオプションとマッチしたときは、最後にマッチしたオプションのアクションが有効になります。不正な -W オプションは無視されます。(最初の警告が発生したときに、不正なオプションに対する警告メッセージが表示されます。)

  Python 2.7 から、 `DeprecationWarning` とその子クラスはデフォルトで無視されます。 -Wd オプションを指定して有効にすることができます。

  警告は Python プログラムの中から `warnings` モジュールを利用して制御することができます。

  引数の一番シンプルな形は、以下のアクション文字列(かそのユニークな短縮形) を単体で利用するものです。

  `ignore`
    全ての警告を無視する。
  `default`
    明示的にデフォルトの動作(ソース行ごとに1度警告を表示する)を要求する。
  `all`
    警告が発生するたびに表示する (これは、ループの中などで同じソース行により繰り返し警告が発生された場合に、大量のメッセージを表示します。)
  `module`
    各モジュールで最初に発生した警告を表示する。
  `once`
    プログラムで最初に発生した警告だけを表示する。
  `error`
    警告メッセージを表示する代わりに例外を発生させる。

  引数の完全形は次のようになります:

      action:message:category:module:line

  ここで、 action は上で説明されたものですが、残りのフィールドにマッチしたメッセージにだけ適用されます。空のフィールドは全ての値にマッチします。空のフィールドの後ろは除外されます。 message フィールドは表示される警告メッセージの先頭に、大文字小文字を無視してマッチします。 category フィールドは警告カテゴリにマッチします。これはクラス名でなければなりません。 category のマッチは、メッセージの実際の警告カテゴリーが指定された警告カテゴリーのサブクラスかどうかをチェックします。完全なクラス名を指定しなければなりません。 module フィールドは、(完全正規形(fully-qualified)の) モジュール名に対してマッチします。このマッチは大文字小文字を区別します。 line フィールドは行番号にマッチします。 0 は全ての行番号にマッチし、省略した時と同じです。

  参考

  `warnings` – the warnings module

  PEP 230 – Warning framework

  `PYTHONWARNINGS`

`-x```

  Unix 以外の形式の `#!cmd` を使うために、ソースの最初の行をスキップします。これは、DOS専用のハックのみを目的としています。

  ノート

  エラーメッセージ内の行番号は -1 されます。

`-3```

  Python 3.x との、 2to3 によって簡単に解決できない互換性の問題について警告します。以下のものが該当します。

  - `dict.has_key()`
  - `apply()`
  - `callable()`
  - `coerce()`
  - `execfile()`
  - `reduce()`
  - `reload()`

  これらを使うと、 `DeprecationWarning` を発生させます。

  バージョン 2.6 で追加.

### 使うべきでないオプション

`-J```

  Jython のために予約されています。

`-U```

  全ての文字列リテラルを、全部 unicode にします。このオプションはあなたの世界を破壊してしまうかもしれないので、このオプションを使おうとしないでください。これは、通常とは違うマジックナンバーを使って `.pyc` ファイルを生成します。ファイルの先頭に次のように書いて、このオプションの代わりにモジュール単位で unicode リテラルを有効にできます。

      from __future__ import unicode_literals

  詳細は `__future__` を参照してください。

`-X```

  別の Python の実装が独自の目的で利用するために予約されています。

## 環境変数

以下の環境変数は Python の動作に影響します。

`PYTHONHOME`

  標準 Python ライブラリの場所を変更します。デフォルトでは、ライブラリは `prefix/lib/pythonversion` と `exec_prefix/lib/pythonversion` から探されます。ここで、 `prefix` と `exec_prefix` はインストール依存のディレクトリで、両方共デフォルトでは `/usr/local` です。

  `PYTHONHOME` が1つのディレクトリに設定されている場合、その値は `prefix` と `exec_prefix` の両方を置き換えます。それらに別々の値を指定したい場合は、 `PYTHONHOME` を `prefix:exec_prefix` のように指定します。

`PYTHONPATH`

  モジュールファイルのデフォルトの検索パスを追加します。この環境変数のフォーマットはシェルの `PATH` と同じで、 `os.pathsep` (Unix ならコロン、 Windows ならセミコロン) で区切られた1つ以上のディレクトリパスです。存在しないディレクトリは警告なしに無視されます。

  通常のディレクトリに加えて、 `PYTHONPATH` のエントリはピュアPython モジュール(ソース形式でもコンパイルされた形式でも) を含む zip ファイルを参照することもできます。拡張モジュールは zip ファイルの中から import することはできません。

  デフォルトの検索パスはインストール依存ですが、通常は `prefix/lib/pythonversion` で始まります。 (上の `PYTHONHOME` を参照してください。) これは 常に `PYTHONPATH` に追加されます。

  上の インターフェイスオプション で説明されているように、追加の検索パスディレクトリが `PYTHONPATH` の手前に追加されます。検索パスは Python プログラムから `sys.path` 変数として操作することができます。

`PYTHONSTARTUP`

  もし読込み可能ファイルの名前であれば、インタラクティブモードで最初のプロンプトを表示する前にそのファイル内の Python コマンドを実行します。このファイルはインタラクティブコマンドが実行されるのと同じ名前空間の中で実行されるので、このファイル内で定義されたり import されたオブジェクトはインタラクティブセッションから制限無しに利用することができます。このファイルで `sys.ps1` と `sys.ps2` を変更してプロンプトを変更することもできます。

`PYTHONY2K`

  この変数に空でない文字列を設定すると、 `time` モジュールが文字列で指定される日付に4桁の年を含むことを要求するようになります。そうでなければ、2桁の年は `time` モジュールのドキュメントに書かれているルールで変換されます。

`PYTHONOPTIMIZE`

  この変数に空でない文字列を設定すると、 -O オプションを指定したのと同じになります。整数を指定した場合、 -O を複数回指定したのと同じになります。

`PYTHONDEBUG`

  この変数に空でない文字列を設定すると、 -d オプションを指定したのと同じになります。整数を指定した場合、 -d を複数回指定したのと同じになります。

`PYTHONINSPECT`

  この変数に空でない文字列を設定すると、 -i オプションを指定したのと同じになります。

  この変数は Python コードから `os.environ` を使って変更して、プログラム終了時のインスペクトモードを強制することができます。

`PYTHONUNBUFFERED`

  この変数に空でない文字列を設定すると、 -u オプションを指定したのと同じになります。

`PYTHONVERBOSE`

  この変数に空でない文字列を設定すると、 -v オプションを指定したのと同じになります。整数を指定した場合、 -v を複数回指定したのと同じになります。

`PYTHONCASEOK`

  この環境変数が設定されていると、 Python は `import` 文で大文字/小文字を区別しません。これは Windows でのみ動作します。

`PYTHONDONTWRITEBYTECODE`

  この環境変数が設定されていると、 Python はソースモジュールの import 時に `.pyc`, `.pyo` ファイルを生成しません。

  バージョン 2.6 で追加.

`PYTHONIOENCODING`

  stdin/stdout/stderr のエンコーディングを強制します。シンタックスは `encodingname:errorhandler` です。 `:errorhandler` の部分はオプションで、 `str.encode()` の引数と同じ意味です。

  バージョン 2.6 で追加.

`PYTHONNOUSERSITE`

  この環境変数が設定されている場合、 Python はユーザー site ディレクトリを sys.path に追加しません。

  バージョン 2.6 で追加.

  参考

  PEP 370 – Per user site-packages directory

`PYTHONUSERBASE`

  ユーザー site ディレクトリのベースディレクトリを設定します。

  バージョン 2.6 で追加.

  参考

  PEP 370 – Per user site-packages directory

`PYTHONEXECUTABLE`

  この環境変数が設定されていると、 `sys.argv[0]` に、 C ランタイムから取得した値の代わりにこの環境変数の値が設定されます。 Mac OS X でのみ動作します。

`PYTHONWARNINGS`

  これは -W オプションと同じです。カンマ区切りの文字列が設定されたとき、その動作は -W を複数回指定されたのと同じになります。

### デバッグモード変数

以下の環境変数は、 --with-pydebug ビルドオプションを指定して構成されたデバッグビルド版の Python でのみ効果があります。

`PYTHONTHREADDEBUG`

  設定された場合、 Python はスレッドデバッグ情報を表示します。

  バージョン 2.6 で変更: 以前は、この変数は `THREADDEBUG` という名前でした。

`PYTHONDUMPREFS`

  設定された場合、 Python はインタプリタのシャットダウン後に残っているオブジェクトとリファレンスカウントをダンプします。

`PYTHONMALLOCSTATS`

  設定された場合、 Python は、新しいオブジェクトアリーナを作成するときと、シャットダウン時に、メモリアロケーション統計情報を表示します。

### ナビゲーション

- 索引
- モジュール |
- 次へ |
- 前へ |
- Python 2.7ja1 documentation »
- Python のセットアップと利用 »