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

2013/11/08 | 所要時間 約1分

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()

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

2013/11/08

プロフィールアイコン

ton

何でもやりたいエンジニア

趣味でFlash作って遊んでいたらプログラマーになってしまいました。

仕事ではSNSの運用したり、ゲーム作ったり、webサービス作ったり、アプリ作ったり、色々してます。