問題
普通だと import できないファイル名の python スクリプト、
例えば zz-myscript-01.py
みたいなやつの内部で実装されている関数をインポートしたい。
しかし、
import zz-myscript-01
みたいな書き方はできない (Syntax Error)
名前を変えずにロードしたい。
解決方法
imp
を使う。例えば、上記スクリプトを、 mymodule
という名前でロードするには
以下のようにすれば OK。
def customImport():
import imp
global mymodule
fp, name, desc = imp.find_module("zz-myscript-01")
mymodule = imp.load_module("mymodule", fp, name, desc)
customImport()
なぜうまく行くのか
imp
は、 Python の import 文の実装へのインタフェースなので、
それを使って独自に import をしているから。
参考