python importlib 从错误目录导入
python importlib imports from wrong directory
我正在尝试从不同的 python 文件 (*.py) 中导入名为 'tasks' 的字典。
路径存储在我的数组 directories['code']
中。并非所有文件都包含这些任务指令之一。
问题是,一旦找到带有字典的文件,'foo' 将被设置为该字典,但不会被重置,即使下一个文件没有字典。
但是,一旦发现另一个包含新字典的文件,'foo' 将再次正确分配。
我想知道这是否是因为 importlib
正在搜索整棵树,而不仅仅是确切的路径?
当然,我该如何解决这个问题?
import importlib
for i in range(len(directories['code'])):
try:
foo = importlib.machinery.SourceFileLoader('file', directories['code'][i]).load_module().tasks
except:
foo = '0'
pass
print(foo)
您的代码是有效的,有一个地方出了问题 -- directories['code'][i]
, -- 所以尝试使用 i
:
for i in ['test/__init__.py', 'test/__init__2.py']:
try:
foo = importlib.machinery.SourceFileLoader('file', i).load_module().__version__
except:
foo = 0
print(i, foo)
# test/__init__.py 1.0.0
# test/__init__2.py 0
我正在尝试从不同的 python 文件 (*.py) 中导入名为 'tasks' 的字典。
路径存储在我的数组 directories['code']
中。并非所有文件都包含这些任务指令之一。
问题是,一旦找到带有字典的文件,'foo' 将被设置为该字典,但不会被重置,即使下一个文件没有字典。
但是,一旦发现另一个包含新字典的文件,'foo' 将再次正确分配。
我想知道这是否是因为 importlib
正在搜索整棵树,而不仅仅是确切的路径?
当然,我该如何解决这个问题?
import importlib
for i in range(len(directories['code'])):
try:
foo = importlib.machinery.SourceFileLoader('file', directories['code'][i]).load_module().tasks
except:
foo = '0'
pass
print(foo)
您的代码是有效的,有一个地方出了问题 -- directories['code'][i]
, -- 所以尝试使用 i
:
for i in ['test/__init__.py', 'test/__init__2.py']:
try:
foo = importlib.machinery.SourceFileLoader('file', i).load_module().__version__
except:
foo = 0
print(i, foo)
# test/__init__.py 1.0.0
# test/__init__2.py 0