2016-07-16 34 views
0

モジュールを動的にインポートするにはimportlib.import_moduleを使用します。私のコードは次のようになります:importlib.import_moduleでモジュールをインポートできません

import os 
import importlib 

os.chdir('D:\\Python27\\Lib\\bsddb') 
m = importlib.import_module('db') 
print dir(m) 

私はこれをPythonコンソールで正常に実行できます。しかし、私はファイルC:\Users\Administrator\Desktop>python test.pyでこれらのコードを実行した場合、それが動作することはできません。

Traceback (most recent call last): 
File "test.py", line 5, in <module> 
    m = importlib.import_module("db") 
File "D:\Python27\lib\importlib\__init__.py", line 37, in import_module 
    __import__(name) 
ImportError: No module named db 

しかし、私は、スクリプトファイルと同じディレクトリにdb.pyファイルをコピーする場合、それが動作します。なぜ私は理解できません。

+0

フォルダ構造の外観を表示できますか?そしてdbはpythonファイルかフォルダですか?追加の詳細を入力してください。 – Pant

+0

@SarvagyaPantこんにちはSarvagya、私がロードしようとしているモジュールはPython Standard Libです。 –

答えて

0

編集:以前のコードをコンソールでテストしたところ、うまくいきました。しかし、私は再びコードを修正しました。 IはD drive直接bsddbモジュールを保持し、再度コードを変更された:これは319モジュールによってexponsed list of functions and variablesもたらす

import os 
os.chdir("D:\\") 
import importlib 
m = importlib.import_module("bsddb.db") 
print len(dir(m)) 
print dir(m) 

。上のようにdot (.) notationを使用してモジュールをインポートする必要があるようです。

+0

これらのコードを含むスクリプトファイルはどのパスに入れていますか?私はあなたのコードを試しましたが、まだ幸運はありません。 :-( –

+0

修正されたコードが働いたのですか? – Pant

+0

はい、これはうまくいきますが、この行 'os.chdir(..)'は削除することができます。 'bsddb.db'はモジュールのグローバル名でなければなりません? –

関連する問題