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

Python子目录模块无法找到求助(禁用sys.path等方案)

解决Python模块导入问题的方案

核心原因

你的问题出在导入路径的层级逻辑上:scripts和utils是subproject目录下的同级子目录,直接用from utils.utility import *属于绝对导入,Python会从当前执行脚本的路径或系统路径中查找utils模块,但如果直接在scripts目录下运行script.py,Python会把scripts当作根路径,自然找不到上级目录下的utils。

具体解决步骤

  1. 保留utils/__init__.py的现有内容(无需修改,这样可以简化后续导入):
from . import utility
from .utility import *
  1. 修改script.py的导入语句为相对导入
    因为script.py和utils是同级目录,使用相对导入语法指定层级关系:
# 方式1:直接导入目标类
from ..utils.utility import 你的类名

# 方式2:借助utils的__init__.py简化导入
from ..utils import 你的类名
  1. 用模块方式执行脚本
    不能直接在scripts目录下运行python script.py,必须从project或subproject目录出发,以模块形式执行:
  • 从project目录运行:
python -m subproject.scripts.script
  • 从subproject目录运行:
python -m scripts.script

额外说明

  • 相对导入仅适用于作为模块被加载的脚本,直接运行单个脚本会触发报错,因此必须使用python -m的模块执行方式。
  • 确保subproject、scripts目录下也存在__init__.py(空文件即可),Python 3.3+虽支持无__init__.py的命名空间包,但保留该文件能让模块结构更清晰,兼容更多场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 08:52:05