web-dev-qa-db-ja.com

impを使用してモジュールを動的にインポートする

別のディレクトリからモジュールを動的にインポートしようとしています。 この質問 からの回答をフォローしています。 fooという名前のディレクトリにbarという名前のモジュールがあります。メインスクリプトは、fooの親ディレクトリで実行されます。

これが私のテストスクリプト(fooの親ディレクトリで実行されている)にこれまでにあるコードです。

#test.py
import imp

mod = imp.load_source("bar","./foo")

およびbar.pyのコード

#bar.py
class bar:

    def __init__(self):
          print "HELLO WORLD"

しかし、test.pyを実行すると、次のエラーが発生します。

Traceback (most recent call last):
  File "C:\Documents and Settings\user\Desktop\RBR\test.py", line 3, in <module>
    mod = imp.load_source("bar","./foo")
IOError: [Errno 13] Permission denied
18
Richard

imp.load_sourceインポートするには、モジュールのパス名+ファイル名が必要です。ソースを以下のソースに変更する必要があります。

mod = imp.load_source("bar","./foo/bar.py")
32
Lucas S.

単純なパスの問題のようです-__file__またはcwdを確認してください...最初に絶対ファイルパスを試してみてください。 -これ impの例 役立つかもしれません。

2
Petriborg