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

发布Python包到PyPi/Anaconda时子目录包含及导入报错问题求解

问题核心原因

你的导入错误是包内模块的导入路径配置错误导致的:algorithms是example包的子模块,而非全局顶层模块。你直接在site-packages的example目录下运行main.py时,当前工作目录就是example目录,Python导入时会优先查找当前工作目录下的模块,所以可以正常找到algorithms;但从包外导入example.main时,运行的工作目录不是example目录,因此无法直接识别无前缀的algorithms路径。

可行解决方案

1. 修正example/main.py的导入语句

二选一即可,推荐使用绝对导入:

  • 绝对导入写法(适配所有调用场景):
    将from algorithms.sketch.data import *修改为
from example.algorithms.sketch.data import *

所有其他引用algorithms下子模块的导入语句,都按照这个格式补全前缀example.。

  • 相对导入写法(仅适配包内模块调用场景):
    将from algorithms.sketch.data import *修改为
from .algorithms.sketch.data import *

前缀.代表从当前main.py所在的example包目录下查找子模块。

2. 确认setup.py配置

你用find_packages()的版本已经可以正常识别所有子包,不需要手动罗列所有包路径,配置是正确的。

3. 验证修改

执行以下命令测试修改是否生效:

  • 卸载本地已安装的旧版本包:pip uninstall -y example
  • 在项目根目录(setup.py所在目录)执行本地安装:pip install .
  • 切换到任意非项目目录打开Python终端,执行from example.main import *验证导入是否正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 17:57:04