python-3.x – 在python3中使用importlib进行动态导入时出错
我一直在尝试使用importlib和
python3(3.6).
目录结构 main.py #Note: I will only modify line 4 that uses importlib import importlib if __name__ == '__main__': print("In main.py") hello = importlib.import_module('hello',package='./') print("Loaded hello.py") hello.hello() hello.py def hello(): print('Hello world') 文件夹/ hello.py def hello(): print('Hello world in folder') 意见 如果我做 hello = importlib.import_module(‘hello’,package =’./’)或 hello = importlib.import_module(‘hello’) 它从根文件夹导入hello.py并打印hello world. 如果我做 hello = importlib.import_module(‘folder.hello’) 它从根文件夹导入文件夹/ hello.py并在文件夹中打印hello world. 但如果我这样做 hello = importlib.import_module(‘hello’,package =’folder’)或 hello = importlib.import_module(‘hello’,package =’./ folder’) 它给出了错误 Traceback (most recent call last): File "main.py",line 4,in <module> hello = importlib.import_module('hello',package='./folder') File "/usr/lib/python3.6/importlib/__init__.py",line 126,in import_module return _bootstrap._gcd_import(name[level:],package,level) File "<frozen importlib._bootstrap>",line 994,in _gcd_import File "<frozen importlib._bootstrap>",line 971,in _find_and_load File "<frozen importlib._bootstrap>",line 953,in _find_and_load_unlocked ModuleNotFoundError: No module named 'hello' 问题 我不确定这里发生了什么.我很确定我对python模块和包的理解有问题.有人可以解释为什么这是预期的行为? 解决方法
如果第一个参数,要导入的模块是绝对模块引用(没有前导.),则完全忽略SEOnd参数.
要将模块导入另一个模块b,您必须使用 a = importlib.import_module('.a',package='b') 在你的情况下,这应该工作 hello = importlib.import_module('.hello',package='folder') 根据经验,如果要将package用作第二个参数,则导入包应该有效. from package import module 然后成为 importlib.import_module(module,package) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |