Python 3.7模块导入报错:找不到application模块的问题排查
问题原因及解决方案
核心问题
- 模块搜索路径限制:直接运行
application/myfile.py时,Python会把application/目录加入模块搜索路径,而非application的父目录。此时application作为顶层包不在搜索范围内,因此报错找不到该模块。 - 文件名笔误:
modules子目录下的初始化文件写成了__init.py__,正确文件名应为__init__.py——缺少下划线会导致Python无法将modules识别为合法子包。
解决方法
方法1:以模块方式运行脚本
切换到application的父目录(假设父目录名为project),执行以下命令:
python -m application.myfile
这种方式会让Python将父目录纳入模块搜索路径,从而正确识别application顶层包。
方法2:手动添加父目录到搜索路径
在myfile.py最开头添加代码,将application的父目录加入Python模块搜索路径:
import sys import os # 获取当前文件绝对路径,向上追溯一级父目录 sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) # 后续正常执行导入 from application.modules import mymodules
方法3:设置PYTHONPATH环境变量
在Ubuntu终端中,将application的父目录路径添加到PYTHONPATH:
export PYTHONPATH=/path/to/application_parent_dir:$PYTHONPATH
替换/path/to/application_parent_dir为实际路径,之后直接运行myfile.py即可正常导入模块。
内容的提问来源于stack exchange,提问作者David Shaw
相关产品推荐
相关产品推荐

