如何在私有GitHub仓库部署本地构建的Python Wheel包,实现免编译pip安装?
解决方法
方案1:通过Git Archive管道直接安装WHL
利用git archive从远程仓库提取指定的WHL文件,再通过管道传给pip install,全程用SSH协议(无需Token),且不会下载整个仓库或触发编译:
git archive --remote=ssh://git@your-git-repo-url.git HEAD:dist my_wheel_package.whl | pip install -
- 说明:
git archive --remote会从远程仓库的HEAD分支(可替换为指定分支/tag)的dist目录中导出目标WHL文件,通过管道直接交给pip安装,跳过源码编译流程。 - 前提:用户已通过SSH密钥获得仓库访问权限,无需额外配置。
方案2:将WHL放在独立分支简化安装
如果希望命令更简洁,可以新建一个仅存放WHL文件的分支(比如wheels):
- 本地操作创建分支并推送:
git checkout --orphan wheels git rm -rf . cp dist/my_wheel_package.whl . git add my_wheel_package.whl git commit -m "Add pre-built wheel" git push origin wheels - 用户安装时使用:
git archive --remote=ssh://git@your-git-repo-url.git wheels my_wheel_package.whl | pip install -
或更简化的写法(分支仅含WHL文件时可用):
pip install <(git archive --remote=ssh://git@your-git-repo-url.git wheels my_wheel_package.whl)
方案3:修改仓库结构适配pip源码安装逻辑(不推荐)
如果一定要用类似pip install git+.../dist/xxx.whl的形式,需在dist目录添加最简setup.py,让pip识别为预构建包,但会增加维护成本:
- 在
dist目录下创建setup.py:from setuptools import setup setup( name="my_package", version="x.y.z", packages=[], package_data={"": ["my_wheel_package.whl"]}, install_requires=[], ) - 用户安装命令:
pip install git+ssh://git@your-git-repo-url.git#subdirectory=dist
此方法本质还是让pip处理源码包,只是绕过了编译,不如前两种方案直接高效。
内容的提问来源于stack exchange,提问作者W4ltz
相关产品推荐
相关产品推荐

