You need to enable JavaScript to run this app. 如何定义pip/setuptools私有依赖实现SSH优先HTTPS回退
优惠活动
大模型
产品
解决方案
定价
更多

如何定义pip/setuptools私有依赖实现SSH优先HTTPS回退

解决方案

pip目前没有原生支持SSH拉取失败自动回退HTTPS的依赖声明语法,你可以通过以下两种方案实现你要的效果:

推荐方案:统一配置HTTPS依赖,本地通过git规则自动替换为SSH

该方案不需要修改项目原有配置,仅需个人本地做一次全局配置即可:

  • 首先将项目setup.cfg里的依赖统一写为生产环境使用的HTTPS格式:
install_requires =
  photutils
  numpy
  mydep @ git+https://github.com/mydep.git#egg=mydep
  • 本地执行一次git全局配置命令:
    git config --global url."ssh://git@github.com/".insteadOf "https://github.com/"
  • 配置生效后,git在处理所有https://github.com/开头的仓库地址时,会自动替换为SSH协议地址,不管是pip安装依赖、直接git clone还是其他git操作都会生效,完全不影响你的日常使用习惯。其他未配置该规则的项目成员、生产环境,依旧会默认走HTTPS协议拉取依赖。
  • 如需取消该配置,执行命令:
    git config --global --unset url."ssh://git@github.com/".insteadOf

备选方案:动态依赖声明

如果不想修改本地git配置,可以将静态的setup.cfg改为动态的setup.py,通过环境变量切换依赖地址:

from setuptools import setup
import os

use_ssh = os.getenv("USE_SSH", "0") == "1"
mydep_url = "git+ssh://git@github.com/mydep.git#egg=mydep" if use_ssh else "git+https://github.com/mydep.git#egg=mydep"

setup(
    # 其他项目配置(名称、版本、描述等)和原有配置保持一致即可
    install_requires = [
        "photutils",
        "numpy",
        f"mydep @ {mydep_url}"
    ]
)

你自己本地安装时执行USE_SSH=1 pip install .就会走SSH协议拉取,其他成员默认执行pip install .就走HTTPS协议。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 19:51:01