You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python包内部模块导入引发ModuleNotFoundError问题咨询

Python包内部模块导入引发ModuleNotFoundError问题咨询

你遇到的确实是包内模块相对导入的典型问题,我来给你拆解原因和解决办法:

问题根源

当你直接运行derivative_functions.py时,Python会自动把当前文件所在的pippo目录加入到模块搜索路径sys.path里,所以能轻松找到同目录的functions_pippo.py。但当你从外层的main.py导入pippo.derivative_functions时,Python是把provapackage目录加入到sys.path的,这时候derivative_functions.py里用from functions_pippo import add这种绝对导入方式,Python会去sys.path的顶层目录找functions_pippo模块,自然找不到它——毕竟它藏在pippo子目录里。

两种可行解决方案

你可以根据自己的习惯选择其中一种:

方案一:使用相对导入

修改derivative_functions.py里的导入语句,用相对路径指向同目录的模块:

from .functions_pippo import add

这里的.代表当前模块所在的包目录(也就是pippo),这样Python就能精准定位到同目录的functions_pippo模块了。

方案二:基于包名的绝对导入

如果你更偏好绝对导入的写法,也可以直接以包名为前缀来导入:

from pippo.functions_pippo import add

这种方式要求provapackage所在目录在sys.path中(运行main.py时,Python会自动识别当前工作目录下的包结构),所以也能正常找到目标模块。

额外注意事项

  • 不要直接运行使用了相对导入的模块文件(比如直接跑derivative_functions.py),这时候Python会把它当作顶层脚本,相对导入会触发报错。如果要测试这个模块,建议用python -m pippo.derivative_functions这种模块运行方式,或者在main.py里写测试代码。
  • 确保pippo目录下的__init__.py存在(你已经满足这个条件),它是Python识别该目录为合法包的必要标志。

试试上面的方法,应该就能解决这个ModuleNotFoundError了~

备注:内容来源于stack exchange,提问作者GiusWestsideDS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 14:37:32