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

Python跨文件夹导入模块问题:jobs内脚本导入classes模块失败

解决Python跨文件夹导入模块的问题

先明确你的文件夹结构(按描述还原)

项目根目录/
├─ classes/
│  ├─ __init__.py
│  └─ process_things.py
└─ jobs/
   ├─ __init__.py
   └─ process_file.py

三种可行的导入方法

方法1:临时把根目录加入Python路径

直接在jobs/process_file.py的最开头加这段代码:

import sys
import os
# 获取项目根目录(也就是jobs文件夹的上一级目录)
root_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(root_path)

# 接下来就能正常导入了,把「你的类名」换成实际的类
from classes.process_things import 你的类名

这种方法不需要改其他配置,直接运行脚本就行。

方法2:用相对导入(需要按包运行)

  1. 先给classes和jobs文件夹都加一个空的__init__.py文件,让Python把它们当成包。
  2. 在jobs/process_file.py里写相对导入代码:
from ..classes.process_things import 你的类名
  1. 注意:不能直接双击或者用python jobs/process_file.py运行,得从项目根目录用包的方式启动:
python -m jobs.process_file

方法3:设置系统环境变量PYTHONPATH

运行脚本前,把项目根目录加到PYTHONPATH里:

  • Windows命令行:
set PYTHONPATH=你的项目根目录路径;%PYTHONPATH%
  • Linux/macOS终端:
export PYTHONPATH=你的项目根目录路径:$PYTHONPATH

设置完之后,直接运行jobs/process_file.py就能正常导入了。

几个要注意的点

  • 一定要确保classes文件夹里有__init__.py,不然Python不认它是包。
  • 检查导入的类名、文件名有没有拼写错,Python大小写敏感。
  • 用相对导入的时候,必须按包的方式启动脚本,直接运行单个文件会报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 15:12:22