2013-06-16 12 views
12

eval()関数を使用してモジュールをインポートできません。モジュールをインポートするためのeval

私はimport vfs_tests as vを実行すれば機能します。ただし、eval()eval('import vfs_tests as v'))のような同じインポートでは構文エラーが発生します。

これはなぜですか?

答えて

26

使用execimport文でのみ表現に関する

exec 'import vfs_tests as v' 

eval作品。

execは、Python 3で関数です:exec('import vfs_tests as v')

あなたはimportlibモジュール使用すべき文字列を使用してモジュールをインポートするには:Pythonの2.6で

import importlib 
mod = importlib.import_module('vfs_tests') 

を以前の__import__を使用しています。

+4

警告の単語:execは非常に強力です。あなたが実行している文字列の一部が信頼できないソースから来た場合、execも非常に危険です。 –

+0

py <= 2.6の場合は__import__を使用しますが、通常のインポートと同様に、インポートされた名前は定義されていません。 – TextGeek

関連する問題