1. Qiita
  2. 投稿
  3. Python

Pythonでスクリプトを動的にimportする

  • 18
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

Pythonでは、 ハイフン(-) がファイル名に入ったスクリプトはimportステートメントではできません。
ですがテストを書くためにどうしてもハイフンが入ったファイル名をimportしたい場合、どうすればいいのか、調べて分かったのでメモ。

__import__

__import__ は、ファイルのパス名を引数にとり、ファイルのモジュールを返します。

load-path.py
import sys
path = sys.path
>>> module = __import__("load-path")
>>> type(module)
<type 'module'>
>>> dir(module)
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'sys', 'path']
>>> dir.path

これでハイフンがついたファイルでも、簡単にimportできます。

テストクラス内で使う

unit.test.py
import unittest

class Tester(unittest.TestCase):
    module = __import__("load-path")

    def setUp(self):
        for key in dir(self.module):
            setattr(self, key, getattr(self.module,key))