我的 pip freeze 输出中有如下几行:
-e [email protected]:widgets.git@3bdaf7d07c44a87c38beb1e8abd163a7edf99adc#egg=widgets
-e [email protected]:[email protected]#egg=gadgets
当需要使用pip install -r requirements.txt
,似乎 pip 错误地将example.com:[email protected]
识别example.com:gadgets.git
然后它应该查看 3bda...99adc 提交。
如果我尝试使用 pip freeze 输出进行安装,例如
pip install -e [email protected]:[email protected]#egg=gadgets
我犯了同样的错误。
这都是使用 pip 1.5.4
请注意,通过以下更改,它可以正常工作:
pip install -e [email protected]:/path/to/project/[email protected]#egg=project
或者
pip install -e [email protected]:project.git#egg=project
虽然在后者中,它显然只会拉出当前的提交,而不是 3bdaf 中指定的那个……
此外,由于我不明白的原因,它_确实_适用于对 github 的请求。
那是,
pip install -e [email protected]:JordanReiter/[email protected]#egg=github_project
作品。
这类似于#6293。 解析器(基于 stdlib urlsplit
在识别 URL 的路径部分时遇到问题,当它根本不包含/
时,将+
之后的整个内容识别为netloc
. 没有 rev 的变体完全是偶然的,因为netloc
和path
后来被连接回来并传递给 Git(它会自动做正确的事情)。
#6293 中的讨论似乎倾向于完全放弃对 SCP 风格的 URL 支持,所以这里更好的解决方案是在pip freeze
吐出git+ssh://
URL。
结束,因为我们建议删除 #7554 中的git+git@
表单。