如何正确导入Python模块并解决No module named报错问题
报错原因
- 路径拼接使用硬编码的
/,Windows系统下路径分隔符不匹配,导致project subfolder目录没有被正确加入Python的模块搜索路径 - 若
project subfolder目录下没有空的__init__.py文件,Python不会将该目录识别为合法的包目录,无法搜索到目录下的模块 - 直接运行脚本时的工作目录与预期不符,也会导致相对路径计算错误,无法正确定位
test.py的位置
修复方案
方案1:修正sys.path配置(最通用,适合直接运行脚本的场景)
- 首先在
project subfolder目录下新建一个空的__init__.py文件,标记该目录为Python可识别的包目录 - 把file1.py中的路径配置代码替换为跨平台兼容的写法:
import os import sys # 获取当前file1.py所在的subfolder1目录的绝对路径 current_dir = os.path.dirname(os.path.abspath(__file__)) # 计算上一级的project subfolder目录的绝对路径,自动适配不同系统的路径分隔符 project_subfolder_dir = os.path.normpath(os.path.join(current_dir, "..")) # 将目标目录加入模块搜索路径 sys.path.append(project_subfolder_dir) import test as t
方案2:使用相对导入(适合作为项目模块运行的场景)
- 同样需要先在
project subfolder、subfolder1目录下都新建空的__init__.py文件 - 在file1.py中直接写相对导入语句:
from .. import test as t
- 运行时需要退到最外层的
Project folder目录,使用模块方式运行:python -m "project subfolder.subfolder1.file1"
注意事项
- 建议修改目录命名规则,避免目录名中出现空格,比如将
project subfolder改为project_subfolder,可以大幅减少路径识别相关的问题 - 不需要将当前
subfolder1目录加入sys.path,因为test.py不在该目录下,属于无效配置
内容的提问来源于stack exchange,提问作者Sai
相关产品推荐
相关产品推荐

