ton-tech-ton

pythonでハイフンのつくファイルをモジュールとして読み込む方法

python

pythonはファイル名にハイフンをつけることは推奨していない. というかハイフンがあるファイルをモジュールとしてimportしようとするとシンタックスエラーになる.

しかし,やんごとなき理由でどうしてもハイフンのつくファイルをimportしたい時もあるかもしれない. そういう時はimportlib.import_moduleを使うと読み込める.

importlib.import_moduleはpython2.7/3系で使える.

example1

例えばmain.pyから同じディレクトリにあるhoge-module.pyをモジュールとしてimportしたい時,

.
├── hoge-module.py
└── main.py

以下のように読み込むことができる.

main.py
1
2
3
import importlib
hoge_module = importlib.import_module("hoge-module")
hoge_module.test_func()

example2

また,例えばhoge-module.pyがディレクトリの下にある時,

.
├── main.py
└── module1
    ├── __init__.py
    └── hoge-module.

__init__.pyの中に以下のように書く.

__init__.py
1
2
import importlib
hoge_module = importlib.import_module(".hoge-module", "module1")

そしてmain.pyから 以下のように読み込める.

main.py
1
2
from module1 import hoge_module
hoge_module.test_func()

どうしてもファイル名がハイフンじゃなきゃダメなんだ!!!って時だけ使うこと.

Comments