Python改用通配符导入自定义模块FunctionsAZ时报ModuleNotFoundError如何解决
报错原因
ModuleNotFoundError本质是Python解释器的模块搜索路径中无法定位到FunctionsAZ.py文件,通配符导入语法本身不会触发模块找不到的报错,你此前显式导入正常、切换语法后报错,通常是运行环境的路径配置发生了变动,常见诱因如下:
- 运行脚本的工作目录发生了变动,不再是
FunctionsAZ.py所在的文件夹。Spyder默认未锁定工作目录时,会随打开文件的位置、上次运行路径自动切换,是该场景下最常见的问题来源 FunctionsAZ.py被移动到其他文件夹,或者文件名大小写被误改。Windows系统默认大小写不敏感,之前可能可以正常导入,若后续开启了路径大小写敏感、或切换到类Unix运行环境就会触发报错- 此前为了显式导入临时添加的模块搜索路径,在重启Spyder、切换Conda环境后配置失效
- 当前运行使用的Conda环境不是此前配置过模块路径的环境,Spyder内核被误切换到其他未配置的虚拟环境
FunctionsAZ.py所在路径包含中文、空格或特殊符号,解释器解析路径出错无法定位模块
解决方法
- 基础文件校验
首先确认FunctionsAZ.py文件存在、文件名大小写与导入语句完全一致,先将当前运行的主脚本与FunctionsAZ.py放在同一个全英文无特殊符号的文件夹下测试导入是否正常。 - 固定工作目录或手动添加搜索路径
方法一:打开Spyder的「运行」-「配置每文件的运行设置」,勾选「工作目录设置为以下目录」,选择FunctionsAZ.py所在的文件夹作为固定工作目录。
方法二:在脚本开头手动将模块所在路径加入搜索路径,示例代码如下:import sys # 引号内替换为FunctionsAZ.py所在文件夹的绝对路径 sys.path.append("C:/xxx/xxx/module_folder_path") from FunctionsAZ import * - 确认Conda环境匹配
点击Spyder右下角的内核状态区域,确认当前激活的是你此前正常使用的Python 3.8.8环境,避免错切到其他未配置的虚拟环境。 - 全局导入配置(可选)
如果需要在任意工作目录下都能导入该模块,可以把FunctionsAZ.py放到当前Conda环境的site-packages目录下,通用路径为你的Anaconda安装路径/envs/你的环境名称/lib/python3.8/site-packages,放入后无需额外配置路径即可直接导入。
额外提示
通配符导入虽然简化了写法,但会污染当前命名空间,容易出现函数名冲突的问题,若后续遇到同名函数被覆盖的问题,可以改用别名导入的写法:
import FunctionsAZ as faz # 调用时直接使用faz.函数名即可
内容的提问来源于stack exchange,提问作者N27
相关产品推荐
相关产品推荐

