概要
Pythonの対話モードの基本操作と、PYTHONSTARTUPを使った起動時スクリプトの設定方法を整理する。
対話モードは、短いコードの確認、ライブラリの挙動確認、環境変数やパスの調査に便利な実験場所になる。
PYTHONSTARTUPを使うと、毎回使うimportや補助関数を起動時に読み込める。
この記事の構成
- 対象環境と利用上の注意
本文記載時の環境と現在そのまま利用できない箇所を確認。 - 作業時の注意点
設定変更やコマンド実行前に確認しておきたい注意点を整理。 - 対話モードの使用例
対話モードの使用例をコードや具体例で確認。 - 環境変数(PYTHONSTARTUP)の設定
環境変数(PYTHONSTARTUP)の設定の手順と確認ポイントを整理。 - その他、対話モードの補足
直前の実行結果や組込みヘルプなど、対話モードの便利な機能を確認。
対象環境と利用上の注意
- 本文記載時の環境
掲載した出力はCentOS 7上のPython 3.6.4を利用した当時の例。 - 確認時期
2026年8月にPythonの公式資料と照合し、基本動作を確認。
掲載環境と同じ条件では再実行していない。 - 現在そのまま利用できない箇所
起動メッセージ、実行コマンド名、sys.path、シェルの起動設定はOS・Python・仮想環境で異なる。
出力値やパスは現在の環境で読み替える。
作業時の注意点
- pythonとpython3
環境によって起動するバージョンが違うことがある。 - sys未定義エラー
importしていないモジュールは対話モードでも使えない。 - PYTHONSTARTUPの範囲
通常のスクリプト実行ではなく、対話モード起動時に効く。 - アンダーバー
直前に表示された式の結果を保持するため、通常変数名として代入すると混乱しやすい。
実施内容
対話モードの使用例
-
対話モードの起動
引数なしでpythonまたはpython3コマンドを実行すると、対話モードが起動。どちらのコマンド名を使うかはOSや環境によって異なるため、先にバージョンを確認。
対話モードでは、入力待ち状態を表す「>>>」の後に直接コードを書いて実行することができる。
以下の表示例はPython 3.6.4当時の実行結果であり、現在のPythonではバージョン表記、起動メッセージ、sys.pathの内容などが異なる。基本操作は同じとなる。$ python -V # バージョン確認 Python 3.6.4 $ python # 対話モード起動 (マイナーバージョンまでを指定しても可) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> -
対話モードの実行
例えば、sys.pathを確認したい場合、実際のコーディングと同じ要領でsysをインポート後、sys.pathを実行することで、結果(pathの一覧)が表示される。
$ python # 対話モード起動 (マイナーバージョンまで指定した python3.6 でも同じ動作) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> sys.path ['', '/usr/lib64/python36.zip', '/usr/lib64/python3.6', '/usr/lib64/python3.6/lib-dynload', '/var/www/vops/lib64/python3.6/site-packages','/var/www/vops/lib/python3.6/site-packages'] >>> -
対話モードの終了
exit()を実行。Unix系OSでは「Ctrl」+「D」、Windowsでは「Ctrl」+「Z」を押してから「Enter」でも終了できる。$ python Python 3.6.4 (default, Dec 19 2017, 14:48:12) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> exit()
環境変数(PYTHONSTARTUP)の設定
対話モードでは、環境変数PYTHONSTARTUPに指定したスクリプトを最初に実行する。
以下は、簡単な例として上記、対話モードの実行で記述したsys.pathをimport sysなしで実行できるように事前に環境変数PYTHONSTARTUPに設定する手順。
-
環境変数未設定で
sys.pathを実行$ python Python 3.6.4 (default, Dec 19 2017, 14:48:12) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> sys.path Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'sys' is not defined >>>sysをインポートしていないので当然エラーが発生。 -
PYTHONSTARTUPに
import sysを追記
ホームディレクトリに.pythonstartupを作成後、環境変数「PYTHONSTARTUP」に.pythonstartupを設定し、import sysを追記する。
$ touch ~/.pythonstartup # 空ファイル新規作成 $ vim ~/.pythonstartup # import sys を追記 import sys $ export PYTHONSTARTUP="$HOME/.pythonstartup" # 起動時スクリプトのパスを設定exportの効果は現在のシェルに限られる。常に有効にする場合は、利用しているシェルに応じて.zshrcや.bashrcなどへ同じ設定を記述。 -
再度対話モードで
sys.pathを実行$ python Python 3.6.4 (default, Dec 19 2017, 14:48:12) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> sys.path ['', '/usr/lib64/python36.zip', '/usr/lib64/python3.6', '/usr/lib64/python3.6/lib-dynload', '/var/www/vops/lib64/python3.6/site-packages', '/var/www/vops/lib/python3.6/site-packages'] >>>.pythonstartupを読み込んでsysをインポート後、正常にsys.pathの結果が表示されている。
上記の要領で、Pythonの標準ライブラリなどの共通モジュールを環境変数(PYTHONSTARTUP)に設定しておくと対話モードのコーディングが簡潔になる。
その他、対話モードの補足
-
直前に表示された式の結果を参照する
対話モードでは、最後に表示された式の結果が_(アンダーバー)に保持される。_を評価しても直前のコードを再実行するわけではなく、保存されている値を参照。明示的に_へ代入するとこの用途で扱いにくくなるため、通常の変数名には使わない。$ python [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> sys.path ['', '/usr/lib64/python36.zip', '/usr/lib64/python3.6', '/usr/lib64/python3.6/lib-dynload', '/var/www/vops/lib64/python3.6/site-packages', '/var/www/vops/lib/python3.6/site-packages'] >>> _ ['', '/usr/lib64/python36.zip', '/usr/lib64/python3.6', '/usr/lib64/python3.6/lib-dynload', '/var/www/vops/lib64/python3.6/site-packages', '/var/www/vops/lib/python3.6/site-packages'] >>> -
任意のファイルを実行後、対話モードを起動
-iオプションでファイルパスを指定すると、対話モードに入る前に任意のファイルを実行できる。
$ python -i example.py >>>-iでスクリプト実行後に対話モードへ入る場合、PYTHONSTARTUPのファイルは読み込まれない点に注意。 -
IPythonの導入
標準の対話モードを拡張したIPythonというパッケージもある。
IPythonをインストールすると、TABキーによる補完、入力履歴、シェルコマンド、Pythonデバッガー(Pdb)との連携などを利用できる。$ python -m pip install ipython -
Pythonの設計原則(The Zen of Python)
対話モードでimport thisを実行すると、Tim Petersがまとめた「The Zen of Python」を確認できる。
全文を覚えるものではなく、可読性、明示性、単純さ、名前空間など、Pythonコードを設計・レビューするときの判断軸として読むと役立つ。
背景と原文はPEP 20で確認できる。
まとめ
- Pythonの対話モードは、小さなコードをすぐ試すための実験環境になる。
- PYTHONSTARTUPを使うと、起動時に共通処理を読み込める。
- バージョンや環境変数の違いに注意すると、環境調査にも使いやすい。