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

自制PyPI包运行时出现ModuleNotFoundError找不到utils模块怎么办?

问题原因

这是Python模块导入规则和搜索路径逻辑导致的:

  • 你在jokes.py中写的from utils.helpers import ...属于绝对导入,Python会优先从当前运行脚本的工作目录、以及sys.path列表里的路径查找名为utils的顶层模块
  • 当你在myjokes/目录下运行脚本时,当前工作目录被加入sys.path,能直接识别到同目录下的utils文件夹,所以运行正常
  • 当你在Myjokes/目录下导入myjokes.jokes时,Python的顶层搜索路径是Myjokes/,此时utils是myjokes包的子模块,不是顶层模块,因此无法被找到
解决方案

两种修复方式都可以,更推荐第一种,符合PyPI包的开发规范:

  1. 改用包内相对导入
    把jokes.py里的导入语句修改为:
from .utils.helpers import get_jokes_by_count , get_joke_by_dialect , pinoy_jokes

开头的.代表从当前文件所在的包目录下查找对应模块,不受外层工作目录影响。
注意:请先确认utils/目录下也创建了空的__init__.py文件,否则Python不会将其识别为子包。

  1. 使用完整包路径的绝对导入
    把jokes.py里的导入语句修改为:
from myjokes.utils.helpers import get_jokes_by_count , get_joke_by_dialect , pinoy_jokes

直接从顶层包名开始索引模块,不管运行时的工作目录在哪都能正确找到模块。

修改完成后回到Myjokes/目录重新测试导入和函数调用,即可正常运行,打包上传到PyPI后用户安装使用也不会出现导入错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:15:03