Python项目ModuleNotFoundError:'app'非包问题求助
Python模块导入错误:'app' is not a package 解决方案
项目结构
|__src |__main.py |__gen.py |__app |__ __init__.py |__ app.py |__ lang.py
问题场景
在app.py中尝试用from app.lang import Language导入同级lang.py里的Language类,直接运行app.py时触发ModuleNotFoundError,提示'app' is not a package,即使app目录下存在__init__.py文件。
解决方法
方法1:使用相对导入(推荐)
将导入语句改为相对路径形式,直接引用当前包内的同级模块:
from .lang import Language
这种写法明确指向当前目录下的lang.py,是包内部模块间引用的标准方式。
方法2:手动添加src目录到Python路径
如果坚持使用绝对导入,可在app.py开头添加代码,将src目录加入Python的模块搜索路径:
import sys import os # 获取当前文件的绝对路径,向上回溯到src目录 src_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(src_path) # 之后即可正常使用绝对导入 from app.lang import Language
方法3:以模块方式从src目录运行脚本
不要直接执行app.py,而是进入src目录,用Python的模块运行方式启动:
cd src python -m app.app
这种方式会自动将src作为根目录,Python能正确识别app为合法包,此时原有的绝对导入语句可正常工作。
内容的提问来源于stack exchange,提问作者OMAR ALZEINAB
相关产品推荐
相关产品推荐

