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

如何在pip依赖文件中通过相对路径引用私有WHL包(无需公开发布)

如何在pip依赖文件中通过相对路径引用私有WHL包

我最近碰到了一模一样的需求:已经生成了私有项目的WHL包,想在另一个Python项目里直接复用,又不想把包公开发布到PyPI,需要在requirements依赖文件里用相对路径来引用这个包。翻了pip文档也没找到直接说明,踩了好几个坑之后终于搞定了,分享一下过程:

我试过的错误写法及问题

  • 写法1:用 editable 模式引用WHL文件

    -e file: ./folder/my-project-0.1.0-cp36-cp36m-linux_x86_64.whl#egg=my-project==0.1.0
    

    报错:NotADirectoryError: [Errno 20] Not a directory
    原因:-e(可编辑模式)是针对源码目录设计的,根本不能用来引用WHL这种预编译的包文件。

  • 写法2:带file协议但路径前加了空格

    file: ./folder/my-project-0.1.0-cp36-cp36m-linux_x86_64.whl#egg=my-project==0.1.0
    

    报错:FileNotFoundError: [Errno 2] No such file or directory: '/folder/my-project-0.1.0-cp36-cp36m-linux_x86_64.whl'
    原因:file:后面多了个空格,pip会把路径当成绝对路径从根目录开始找,完全忽略了相对路径的设定。

  • 写法3:直接写相对路径

    folder/my-project-0.1.0-cp36-cp36m-linux_x86_64.whl
    

    报错:Invalid requirement: 'folder/my-project-0.1.0-cp36-cp36m-linux_x86_64.whl' It looks like a path. Does it exist?
    原因:pip会把这种纯路径格式判定为无效的依赖声明,必须明确用file协议来标识这是本地文件路径。

最终成功的写法

在requirements文件里,用无空格的file协议+相对路径,同时带上egg信息指定包名和版本,和其他PyPI包放在一起就行:

numpy
pandas
file:./folder/my-project-0.1.0-cp36-cp36m-linux_x86_64.whl#egg=my-project==0.1.0

这样pip就能正确识别相对路径,从当前requirements文件所在目录出发找到对应的WHL包并完成安装。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:44:25