ich habe ein kleines Problem mit importlib. Ich habe einen Code in einem Modul, welcher über ein Verzeichnis iteriert und versucht, die enthaltenen Module einzubinden. Merkwürdigerweise funktioniert derselbe Code, welcher in der Befehlszeilte einwandfrei arbeitet, in einer Klasse nicht mehr.
Ich kann mir keinen Grund erklären, außer das ich einen gehörigen Knoten im Hirn habe. Folgenden Code hatte ich in die Befehlszeile eingegeben:
Python 3.6.2 (v3.6.2:5fd33b5) 32 Bit
Win7
Code: Alles auswählen
def plugin_walk( p_path ):
tmp_wd = os.getcwd()
os.chdir( p_path )
for element in os.listdir( ):
element = element.split( '.' )
if element[-1] == 'py':
plug_tmp = importlib.import_module( element[0] )
plug = plug_tmp.Plugin
os.chdir( tmp_wd )
Code: Alles auswählen
def plugin_walk( self ):
tmp_wd = os.getcwd()
os.chdir( self.plugin_path )
for element in os.listdir( ):
element = element.split( '.' )
if element[-1] == 'py':
plug_tmp = importlib.import_module( element[0] )
plug_tmp.conf_dict.update( { 'master':self } )
plug = plug_tmp.Plugin( plug_tmp.conf_dict )
self.plugins.update( { element[0] : plug } )
self.event_fire( 'datahub.plugin.add', element )
os.chdir( tmp_wd )
Code: Alles auswählen
Traceback (most recent call last):
File "C:\Users\hasifee\Documents\pyprojects\mediahub\main.py", line 188, in <module>
DH = DataHub( )
File "C:\Users\hasifee\Documents\pyprojects\mediahub\main.py", line 82, in __init__
self.plugin_walk()
File "C:\Users\hasifee\Documents\pyprojects\mediahub\main.py", line 109, in plugin_walk
plug_tmp = importlib.import_module( element[0] )
File "C:\Users\hasifee\AppData\Local\Programs\Python\Python36-32\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 978, in _gcd_import
File "<frozen importlib._bootstrap>", line 961, in _find_and_load
File "<frozen importlib._bootstrap>", line 948, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'test_my'
Nur nebenbei, ich weiß, dass viele Fehlerüberprüfungen fehlen. Ich würde jedoch gern vorher in Erfahrung bringen, warum ich diesen Fehler erhalte.
Ich danke euch schonmal für eure Mühe und wünsche einen schönen Sonntag.