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

首次创建Python自定义库导入时出现ModuleNotFoundError,求问题排查方案

问题原因

  1. 包内导入语法错误:library/__init__.py中写的from filename import myclass1, myclass2属于顶层模块导入语法,Python会直接在全局模块搜索路径中找名为filename的顶层模块,不会自动在__init__.py所在的当前包目录下查找。
  2. 模块搜索路径差异:PyCharm默认会将项目的源目录自动加入Python模块搜索路径,所以不会标红报错,但直接运行脚本时,Python解释器仅会将运行脚本所在的目录(即src目录)加入搜索路径,无法定位到library目录下的filename.py作为顶层模块。
  3. 额外笔误:从报错栈可以看到你实际运行的__init__.py中导入的是class1、class2,和你代码中定义的myclass1、myclass2类名不一致,路径问题解决后需要修正该笔误,否则会继续报错。

解决方法

方案1:使用相对导入(适配当前结构,改动最小)

直接修改library/__init__.py的导入语句,加前缀.表示从当前包目录查找模块:

from .filename import myclass1, myclass2

修改后直接运行test-app.py即可正常执行。

方案2:使用绝对导入(适合后续打包发布场景)

如果后续要将该库打包为pip包对外分发,可以使用绝对导入写法:

from library.filename import myclass1, myclass2

本地测试时需要确保src目录在Python的模块搜索路径中,两种配置方式:

  • PyCharm中右键src目录,选择Mark Directory as -> Sources Root,运行时会自动配置搜索路径
  • 手动在test-app.py开头添加代码,将src目录加入搜索路径:
import sys
import os
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

正式打包补充配置

如果要对外发布该SDK,需要在项目根目录新增pyproject.toml配置文件,指定源码目录为src,即可保证用户安装后导入路径和本地测试一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:30:01