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

Python项目运行报ModuleNotFoundError,用-m参数可正常运行问题求解

问题原因

Python不同运行方式的模块搜索路径(sys.path)逻辑不同:

  • 直接执行python 文件路径时,Python会自动将该文件所在的目录(你的情况是/home/rmali/git/azima/core/)加入sys.path,你的helper包存放在项目根目录azima下,不在core目录里,因此搜索不到对应模块。
  • 执行python -m core.project_setup时,Python会将执行命令时的当前工作目录(你的情况是/home/rmali/git/azima/,也就是项目根目录)加入sys.path,helper包正好在该路径下,因此可以正常导入。

解决方案

方案1:临时指定PYTHONPATH运行

在运行命令前指定项目根目录为模块搜索路径:

PYTHONPATH=/home/rmali/git/azima /home/rmali/git/azima/venv/bin/python /home/rmali/git/azima/core/project_setup.py

也可以先在当前终端执行export PYTHONPATH=$(pwd)(确保当前在azima根目录下),再直接执行你的原运行命令。

方案2:代码内手动添加项目根路径到sys.path

在project_setup.py的最开头添加如下代码,将项目根目录加入搜索路径:

import sys
from pathlib import Path
# 获取当前文件的上两级目录,也就是azima项目根目录
project_root = Path(__file__).parent.parent.resolve()
sys.path.append(str(project_root))

添加后再导入helper相关模块即可。

方案3:将项目安装到虚拟环境(推荐长期开发用)

在项目根目录下新增pyproject.toml配置文件,配置基础的项目信息,之后执行pip install -e .将项目以可编辑模式安装到当前虚拟环境,之后不管在哪个目录、用哪种方式运行,都可以正常识别项目内的模块。

补充注意

建议在helper目录下新增空的__init__.py文件,虽然Python 3.3+支持无__init__.py的命名空间包,但加上可以避免一些特殊场景下的导入异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 04:36:01