目前,在我的requirements.txt
文件中,我可以通过以下方式之一包含来自私有github的包:
git+https://github.com/<repo-name>@<version>
或
git+ssh://git@github.com/<repo-name>@<version>
但是,我不想强制执行安装程序连接到github (ssh或https)的方式。是否有一种方法可以泛泛地列出这个repo/包,以便这两种连接方式都能在pip install -r requirements.txt
命令中工作呢?
发布于 2022-07-08 20:05:09
我几乎可以肯定,这对于pip来说是不可能的,因为一般来说,Git并没有提供一种方法来做到这一点。
仅仅因为GitHub为同一个存储库提供了HTTPS和SSH远程处理,并不意味着所有提供者都提供。即使主机提供商同时提供这两种服务,它们也不一定相对于每个协议的根位于相同的位置。
此外,在失败的情况下,Git不会在协议之间进行自动回退,因为不同的协议是在完全不同的代码中实现的(有时是在不同的二进制文件中实现的),并且因为不清楚在什么情况下应该出现回退。例如,如果身份验证失败,Git是否应该后退?如果不存在身份验证凭据,但需要一些凭据,那么是否应该将其退回?
一般来说,如果您提供的是公共回购(这里不是这样的),yo应该始终使用HTTPS用于GitHub,因为这是匿名的,这意味着它只会工作。对于私有存储库,我会使用您认为每个人最有可能拥有的任何东西。例如,如果您知道每个工程师都将有一个SSH密钥来访问某些系统,这可能是一个很好的选择,但是如果您知道您的开发环境安装脚本使用HTTPS,那么请使用它。
请注意,人们可以使用url.*.insteadOf
重写本地实例中的URL,这可以将一种类型的URL自动写入另一种类型。我碰巧使用它来使用SSH密钥进行所有访问,因为我的组织需要有时间限制的HTTPS令牌,而且我不想处理旋转问题。
https://stackoverflow.com/questions/72912907
复制相似问题