python-3.x – 在python3中使用importlib进行动态导入时出错

python-3.x – 在python3中使用importlib进行动态导入时出错,第1张

概述我一直在尝试使用importlib和 python3(3.6). 目录结构 main.py #Note: I will only modify line 4 that uses importlibimport importlibif __name__ == '__main__': print("In main.py") hello = importlib.import_modu 我一直在尝试使用importlib和 python3(3.6).

目录结构

main.py

#Note: I will only modify line 4 that uses importlibimport importlibif __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_unlockedModuleNotFoundError: 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)
总结

以上是内存溢出为你收集整理的python-3.x – 在python3中使用importlib进行动态导入时出错全部内容,希望文章能够帮你解决python-3.x – 在python3中使用importlib进行动态导入时出错所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1192049.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存