Xonshの設定を ~/.xonsh/*.py に分割して読み込む
こんにちは。shunk031です。この時期こたつに入って読む論文は最高ですよね。
この記事は Xonsh Advent Calendar 2018 17日目の記事です。
xonshの設定をする際、設定ファイルを複数に分割して読み込みたいなーと考えました。 そこでふと思ったのが「あれ?Pythonって先頭にドットがあるモジュールって読み込めるんだっけ?」という疑問です。
今回はホームディレクトリに .xonsh
というドットから始まるディレクトリを作り、そこに分割した設定ファイル群をxonsh起動時に読み込む方法を調べました。
方法
まずは .xonshrc
の設定例を示します。
import imp import os import sys XONSH_DIR = os.path.expanduser('~/.xonsh') sys.path.append(XONSH_DIR) open_file, file_name, desc = imp.find_module(XONSH_DIR) dot_xonsh = imp.load_module(XONSH_DIR, open_file, file_name, desc)
以上の方法で ~/.xonsh
をモジュールとして読み込むことができます。
詳細
対象のディレクトリをPythonモジュールとしてインポートする
対象のディレクトリをPythonモジュールとしてインポートする場合は sys.path
にディレクトリのパスを指定します。
import os import sys XONSH_DIR = os.path.expanduser('~/.xonsh') sys.path.append(XONSH_DIR)
先頭が ドット
であるディレクトリを読み込む
ディレクトリ名の先頭が ドット
から始まる場合、 imp
モジュールを用いて以下のように読み込みを行います。
import imp
open_file, file_name, desc = imp.find_module(XONSH_DIR)
dot_xonsh = imp.load_module(XONSH_DIR, open_file, file_name, desc)
このようにして .xonsh
ディレクトリを dot_xonsh
モジュールとして読み込むことができます。
まとめ
Xonshの設定を ~/.xonsh/*.py
に分割して読み込む際の「ドットから始まるモジュールの読み込み」の方法についてまとめました。imp
モジュールを用いたモジュールのインポートを用いることでドットから始まるモジュールも読み込むことが可能となります。