16. 付録

16.1. 対話モード

対話型の REPL には 2 種類あります。 従来の基本インタープリタはすべてのプラットフォームで使え、入力行を操作するための最小限の機能を備えています。

On Windows, or Unix-like systems with curses support, a new interactive shell is used by default since Python 3.13. This one supports color, multiline editing, history browsing, and paste mode. To disable color, see 色の制御 for details. Function keys provide some additional functionality. F1 enters the interactive help browser pydoc. F2 allows for browsing command-line history with neither output nor the >>> and ... prompts. F3 enters "paste mode", which makes pasting larger blocks of code easier. Press F3 to return to the regular prompt.

新しい対話型シェルでは、 exit または quit と打ってシェルを終えます。これらのコマンドの後に呼び出し括弧を追加する必要はありません。

新しい対話型シェルを望まない場合は、環境変数 PYTHON_BASIC_REPL で無効にできます。

16.1.1. エラー処理

エラーが発生すると、インタープリタはエラーメッセージとスタックトレースを表示します。対話モードでは、それから元のプロンプトに戻ります; ファイルから実行した場合は、スタックトレースを表示してゼロ以外の終了ステータスで終了します(try 文の except 節で処理された例外は、ここでいうエラーにはあたりません。)一部のエラーは無条件に致命的であり、ゼロ以外の終了ステータスで終了します; これは内部の不整合やある種のメモリ不足の場合に適用されます。エラーメッセージは全て標準エラー出力に書き込まれます; これに対して、通常は実行した命令から出力される内容は標準出力に書き込まれます。

割り込み文字 (interrupt character、普通は Control-C か Delete) を一次または二次プロンプトに対してタイプすると、入力が取り消されて一次プロンプトに戻ります。 [1] コマンドの実行中に割り込み文字をタイプすると KeyboardInterrupt 例外が送出されます。この例外は try 文で処理できます。

16.1.2. 実行可能な Python スクリプト

BSD 風の Unix システムでは、Python スクリプトはシェルスクリプトのように直接実行可能にできます。これを行うには、以下の行

#!/usr/bin/env python3

(ここではインタプリタがユーザの PATH 上にあると仮定しています) をスクリプトの先頭に置き、スクリプトファイルに実行可能モードを設定します。 #! はファイルの最初の2文字でなければなりません。プラットフォームによっては、この最初の行を終端する改行文字が Windows 形式 ('\r\n') ではなく、 Unix形式('\n')でなければならないことがあります。ハッシュまたはポンド文字、すなわち '#' は、Python ではコメントを書き始めるために使われていることに注意してください。

chmod コマンドを使えば、スクリプトに実行モードや実行権限を与えることができます。

$ chmod +x myscript.py

Windows では、"実行モード" のような概念はありません。Python のインストーラーは自動的に .py ファイルを python.exe に関連付けるので、Python ファイルをダブルクリックするとそれをスクリプトとして実行します。.pyw 拡張子も(訳注: pythonw.exe に)関連付けられ、通常コンソールウィンドウを抑制して実行します。

16.1.3. 対話モード用の起動時実行ファイル

Python を対話的に使うときには、インタプリタが起動する度に実行される何らかの標準的なコマンドがあると便利なことがよくあります。これを行うには、 PYTHONSTARTUP と呼ばれる環境変数を、インタプリタ起動時に実行されるコマンドが入ったファイル名に設定します。この機能は Unix シェルの .profile に似ています。

このファイルが読み込まれるのは対話セッションだけです。 Python がスクリプトからコマンドを読み込む場合や、/dev/tty をコマンドの入力元として明示的に指定した場合には読み込まれません。 後者は、この点を除けば対話セッションと同じように動作します。 このファイルは対話コマンドと同じ名前空間で実行されます。 そのため、ファイル内で定義またはインポートしたオブジェクトは、対話セッションで名前を修飾せずに使えます。 このファイルで sys.ps1 と sys.ps2 を設定すれば、プロンプトも変更できます。

もし現在のディレクトリから追加でスタートアップファイルを読み出したいのなら、グローバルのスタートアップファイルの中に if os.path.isfile('.pythonrc.py'): exec(open('.pythonrc.py').read()) のようなプログラムを書くことができます。スクリプト中でスタートアップファイルを使いたいのなら、以下のようにしてスクリプト中で明示的に実行しなければなりません:

import os
filename = os.environ.get('PYTHONSTARTUP')
if filename and os.path.isfile(filename):
    with open(filename) as fobj:
        startup_file = fobj.read()
    exec(startup_file)

16.1.4. カスタマイズ用モジュール

Python はユーザーが Python をカスタマイズするための2つのフック、 sitecustomize と usercustomize を提供しています。これがどのように動作しているかを知るには、まずはユーザーの site-packages ディレクトリの場所を見つける必要があります。Python を起動して次のコードを実行してください:

>>> import site
>>> site.getusersitepackages()
'/home/user/.local/lib/python3.x/site-packages'

usercustomize.py をそのディレクトリに作成して、そこでやりたいことをすべて書くことができます。このファイルは自動インポートを無効にする -s オプションを使わない限り、全ての Python の起動時に実行されます。

sitecustomize モジュールも同じように動作しますが、一般的にコンピューターの管理者によって、グローバルの site-packages ディレクトリに作成され、 usercustomize より先にインポートされます。詳細は site モジュールのドキュメントを参照してください。

脚注