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

运行Python脚本时遭遇ModuleNotFoundError问题求助

解决Python ModuleNotFoundError问题

问题场景

目录结构:

housekeeping  # 根目录
└── src
    ├── core1
    │   ├── abc.py  # 包含类xyz
    │   └── __init__.py
    └── core2
        ├── def.py
        └── __init__.py

def.py代码:

from core1.abc import xyz
print("name")

启动命令(startup.sh中调用):

/housekeeping/venv/bin/python3.7 /housekeeping/src/core2/def.py

报错提示找不到core1模块(原描述中folder1为笔误),修改导入为from src.core1.abc import xyz并给src加__init__.py后仍无效。

解决方案

方法1:手动添加模块搜索路径

在def.py开头加入代码,将src目录加入Python的模块搜索路径:

import sys
import os
# 获取src目录的绝对路径
src_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '../'))
sys.path.append(src_dir)

from core1.abc import xyz
print("name")

方法2:以模块形式运行脚本

修改startup.sh中的启动命令,用-m参数以模块方式调用,让Python自动识别项目结构:

cd /housekeeping
/housekeeping/venv/bin/python3.7 -m src.core2.def

注:必须先切换到项目根目录(housekeeping),否则Python无法识别模块层级。

方法3:设置PYTHONPATH环境变量

在startup.sh中先指定PYTHONPATH为src目录,再运行脚本:

export PYTHONPATH=/housekeeping/src
/housekeeping/venv/bin/python3.7 /housekeeping/src/core2/def.py

此时Python会自动从PYTHONPATH指定的目录搜索模块,def.py中原有的from core1.abc import xyz即可正常导入。

原因说明

直接运行脚本时,Python默认仅将脚本所在目录加入模块搜索路径(sys.path),core1所在的src目录不在搜索范围内,因此无法找到模块。上述三种方法均通过不同方式让Python能定位到src目录下的core1模块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 11:07:46