SIGMA-SE Math & Tech Library

SIGMA-SE Math & Tech Library


数学と情報技術をテーマに、書籍や教材だけではつかみにくい考え方を具体例とともに簡潔にわかりやすく伝える解説サイトです。
技術の歴史や背景、関連知識の整理、学習のための覚書や要約記事も掲載しています。

Python - 対話モード:PYTHONSTARTUPと起動時設定の使い方

概要

Pythonの対話モードの基本操作と、PYTHONSTARTUPを使った起動時スクリプトの設定方法を整理する。

対話モードは、短いコードの確認、ライブラリの挙動確認、環境変数やパスの調査に便利な実験場所になる。
PYTHONSTARTUPを使うと、毎回使うimportや補助関数を起動時に読み込める。

この記事の構成

対象環境と利用上の注意

  • 本文記載時の環境
    掲載した出力は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.pathimport 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をインポートしていないので当然エラーが発生。

  • PYTHONSTARTUPimport 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を使うと、起動時に共通処理を読み込める。
  • バージョンや環境変数の違いに注意すると、環境調査にも使いやすい。

参考文献

この記事を共有
Xで共有 Facebookで共有 LINEで共有



Copyright SIGMA-SE All Rights Reserved.
s-hama@sigma-se.jp