使用pip安装特定的git commit


Answers:


293

您可以指定提交哈希,分支名称,标签。

对于分支名称和标记,您还可以安装压缩发行版。由于不需要克隆整个存储库,因此它更快,更高效。GitHub自动创建这些捆绑包。

杂凑:

$ pip install git+git://github.com/aladagemre/django-notification.git@2927346f4c513a217ac8ad076e494dd1adbf70e1

分店名称

用git

$ pip install git+git://github.com/aladagemre/django-notification.git@cool-feature-branch

或从源包

$ pip install https://github.com/aladagemre/django-notification/archive/cool-feature-branch.tar.gz

标签

用git

$ pip install git+git://github.com/aladagemre/django-notification.git@v2.1.0

或从源包

$ pip install https://github.com/aladagemre/django-notification/archive/v2.1.0.tar.gz

这是一个没有充分说明的功能,但是您可以在https://pip.pypa.io/en/latest/reference/pip_install.html#git中找到更多信息。


24
它将添加以下有趣的消息:Could not find a tag or branch '2927346f4c513a217ac8ad076e494dd1adbf70e1', assuming commit.
vlad-ardelean,2015年

11
@ vlad-ardelean关于如何告诉pip这是一个承诺吗?这是在我的部署脚本上输出的,我不想抑制所有stderr。
莱昂纳多·阿罗约

如果您未指定任何内容,那么行为是什么?
Scott Stafford

@ScottStafford您不应有一个称为提交消息的分支/标签。那太奇怪了。
马丁·托马

另外,我会提到HTTPS版本的git+命令:pip install git+https://github.com/gpoore/codebraid@011464539bfb09b8611c8aef0d543532cea958bf。对于公司HTTP代理背后的人来说,这可能很重要。
grwlf

19

对@ hugo-tavares的答案的额外评论:

如果它是私有GitHub存储库,则需要使用:

pip install git+ssh://git@github.com/....

在您的情况下:

pip install git+ssh://git@github.com/aladagemre/django-notification.git@2927346f4c513a217ac8ad076e494dd1adbf70e1

13

只需添加以下行,就可以在项目上使用requirements.txt文件自动安装python软件包:

-e git+https://github.com/owner/repository.git@branch_or_commit

并运行命令行:

$ pip install -r requirements.txt


15
对我(python3.5 virtualenv中的pip 9.0.1)不起作用:pip install -r requirements.txt提出“无法检测到需求名称,请使用#egg =指定一个。但它与格式“-e混帐+工作github.com/owner/repository.git#egg=branch_or_commit
爱德华·伯特

您需要在requirements.txt文件中使用此格式。是你做的吗?
mannysz

1
我知道了,但是还不清楚。该行的开头需要有“ package_name -e ...”,而不仅仅是“ -e ...”。
乌迪

1

如果您想创建一个鸡蛋包装,仍然可以使用相同的@branch_or_commit附件: pip install git+ssh://git@github.com/myrepo.git@mybranch#egg=myeggscript

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.