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

Python模块运行报错:ModuleNotFoundError(__path__属性缺失)求助

报错原因分析

核心问题是你的code目录和Python标准库中的code模块重名了:

  • 当你在my_project目录下执行python -m code.my_code时,Python会优先搜索标准库自带的code模块,而非你项目里的code目录。
  • 标准库的code是单个文件模块,不是包(没有__path__属性),所以Python没法在它下面找到my_code子模块,直接抛出ModuleNotFoundError。

你回到上级目录执行python -m my_project.code.my_code能正常运行,是因为此时指定了完整的包路径my_project.code.my_code,Python会从当前目录(上级目录)找到my_project包,再定位到内部的code子包,不会和标准库的code混淆。

解决办法

方法1:重命名冲突目录(最推荐)

直接把项目里的code目录改成不会和标准库重名的名字,比如src或project_code:

  1. 重命名目录:my_project/code → my_project/src
  2. my_code.py的导入语句不用改
  3. 在my_project目录下执行:
python -m src.my_code

方法2:用绝对导入+完整包路径运行

不修改目录名,调整导入语句后从上级目录运行:

  1. 修改my_code.py的导入语句为绝对导入:
from my_project.functions.module1 import add_three
  1. 回到my_project的上级目录,执行:
python -m my_project.code.my_code

方法3:使用相对导入(需标记目录为包)

给code和functions目录添加__init__.py,将它们标记为Python包,再用相对导入:

  1. 在my_project/code和my_project/functions下分别创建空的__init__.py文件
  2. 修改my_code.py的导入语句为相对导入:
from ..functions.module1 import add_three
  1. 回到my_project的上级目录,执行:
python -m my_project.code.my_code

方法4:临时修改PYTHONPATH(适合临时测试)

在my_project目录下,先把上级目录加入PYTHONPATH,再运行模块:

  • Windows命令行:
set PYTHONPATH=%cd%/..
python -m my_project.code.my_code
  • Linux/macOS终端:
export PYTHONPATH=$(pwd)/..
python -m my_project.code.my_code

内容的提问来源于stack exchange,提问作者zest16

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 06:35:56