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

发布到PyPI的Python包跨文件导入失败如何解决?

问题根因

这是Python导入路径解析规则差异导致的:
你本地运行时大概率是直接在package目录下执行脚本,当前工作目录会被自动加入sys.path,所以能直接找到A.py;但包发布安装后,导入路径基于包的顶层安装目录,你的两种写法都不符合标准的包导入规范。


解决方案

方案1:使用包内相对导入(优先推荐)

直接在B.py中写:

from .A import function

注意该写法仅在将代码作为包导入时生效,不能直接在package目录下以顶层脚本方式运行B.py,如果需要单独测试B.py,请在包的外层目录用如下命令执行:
python -m package.B

方案2:使用正确配置的绝对导入

如果要使用绝对导入写法from package.A import function,需要先确认你的打包配置符合要求:

  • 检查pyproject.toml/setup.py中的包声明配置,比如用setuptools的话需要配置packages = find:来自动识别包目录
  • 确认打包时的顶层目录是package所在的目录,不要额外嵌套外层目录
    配置正确后绝对导入写法即可正常生效。

本地测试注意事项

本地开发时尽量不要进入package目录内直接运行脚本,避免工作目录被加入路径导致和安装后的运行逻辑不一致,所有测试都在包的外层目录执行,模拟用户安装后的导入场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 17:45:01