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
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の中に以下のように書く.
import importlib
hoge_module = importlib.import_module(".hoge-module", "module1")そしてmain.pyから
以下のように読み込める.
from module1 import hoge_module
hoge_module.test_func()どうしてもファイル名がハイフンじゃなきゃダメなんだ!!!って時だけ使うこと.