Python模块导入报错求助:ImportError: No module named name_of_module
解决Python导入模块的
ImportError问题 嘿,我来帮你搞定这个报错!你遇到的问题其实是对Python导入机制的一个常见误解,咱们一步步理清楚:
错误原因
你写的代码里:
name_of_module = abc from name_of_module import *
Python的import语句是静态解析的——它不会把name_of_module当成变量去读取它的值abc,而是直接把"name_of_module"这个字符串当作模块名去系统里查找,可根本不存在叫name_of_module的模块,所以就抛出了ImportError。
另外还要提一句:第一行的abc如果没加引号的话,Python会把它当成变量,要是你没提前定义过abc变量,这行本身还会先报NameError哦!
解决方案
根据你的需求,有两种处理方式:
方式1:直接导入目标模块(推荐)
如果你的目标就是导入abc模块,直接写下面的代码就好,简单又清晰:
from abc import *
不过额外提醒下:from xxx import *这种写法其实不推荐,因为会污染当前命名空间,容易和其他变量重名。更规范的做法是按需导入特定内容,比如:
from abc import ABC, abstractmethod
方式2:动态导入(如果需要用变量指定模块名)
如果你确实需要通过变量来动态指定要导入的模块,就得用Python标准库的importlib来实现,代码示例:
import importlib # 注意这里模块名要写成字符串形式 name_of_module = "abc" # 动态导入模块 target_module = importlib.import_module(name_of_module) # 如果要把模块内的内容导入到当前命名空间(模拟from xxx import *的效果) globals().update(vars(target_module))
这样就能解决你遇到的导入错误啦!
内容的提问来源于stack exchange,提问作者Chinnu
相关产品推荐
相关产品推荐

