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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
