2016-12-10 3 views
1

私はPythonで少しのペットプロジェクトに取り組んでいます。私は外部モジュールを作成し、それらを動的にインポートしたいと考えています。私はimport moduleを使用したい与えられたディレクトリのpythonファイルを反復処理し、それらをインポートしますか?

def getModules(self): 
    os.chdir(moduleDir) 
    for module in os.listdir(): 
      #code goes here to import 
      #also append to a list for use later on 

が、それは単に構文エラーを与える:これまでのところ、私はこのような何かを持っています。

+0

「\ _ \ _ import \ _ \ _」を使用してみましたか? – martianwars

+1

'importlib.import_module'を使用しようとします。あなたのmoduleDirがパッケージであれば、' pkgutil.walk_packages'を使ってすべてのモジュールをリストします。 –

+0

@hjfitzあなたが答えの一つに満足すれば、それを受け入れてください – martianwars

答えて

3

あなたはこのようなimportlib.import_module()使用することができます。

import importlib 

my_modules = [] 

def getModules(self): 
    os.chdir(moduleDir) 
    for module in os.listdir(): 
      my_module = importlib.import_module(module[:-3]) # Or: module.split('.')[0] 
      my_modules.append(my_module) 

例:

は、我々は、以下の機能が含まれているモジュールaを持っているとしましょう:

def fn(): 
    print("Hello World") 

次の通りであるが結果:

>>> import importlib 
>>> 
>>> my_module = importlib.import_module('a') # Note: 'a' without '.py' 
>>> 
>>> my_module.fn() 
Hello World 
2

__import__機能を使用する必要があります。このような何かが

def getModules(self): 
    modules = [] 
    os.chdir(moduleDir) 
    for module in os.listdir('.'): 
      m = __import__(module.split('.')[0]) # Assuming your listdir() gives .py files 
      modules.append(m) 

はAまだ良い選択が__import__のラッパーであるimportlib.import_module()なり、役立ちます。 __import__と似た構文があります。もちろん、import importlibが必要です。

関連する問題