从git repo分支安装pip


685

尝试pip安装仓库的特定分支。Google告诉我

点安装git + https://github.com/user/repo.git@branch

分支的名称是issue/34/oscar-0.6我这样做的,pip install https://github.com/tangentlabs/django-oscar-paypal.git@/issue/34/oscar-0.6但是它返回了404。

如何安装此分支?

Answers:


931

在url前缀之前git+(请参阅VCS支持):

pip install git+https://github.com/tangentlabs/django-oscar-paypal.git@issue/34/oscar-0.6

并指定分支名称,但不要以/。开头。


5
指定分支或提交者是强制性的@吗?
eugene

9
@eugene,否,@之后的部分是可选的。
falsetru '16

3
嘿,现在不是必需的了tree,这起了一个错误。
SalahAdD17年

6
例如,用于分支机构:pip install -U git+https://github.com/danreeves/wagtailgmaps@3.0.0
SalahAdD

3
您也可以将类似这样的内容git+https://github.com/adiralashiva8/robotframework-metrics@v3.1.4放入您的requirements.txt中,然后使用进行安装pip install -r requirements.txt。这将从master分支安装Tag v3.1.4。
Wlad

311

将git +与pip一起使用来克隆存储库可能非常慢(例如,使用https://github.com/django/django@stable/1.6.x进行测试,这将需要几分钟的时间)。我发现与GitHub和BitBucket兼容的最快的东西是:

pip install https://github.com/user/repository/archive/branch.zip

成为django master的对象:

pip install https://github.com/django/django/archive/master.zip

对于django stable / 1.7.x:

pip install https://github.com/django/django/archive/stable/1.7.x.zip

使用BitBucket,它具有相同的可预测模式:

pip install https://bitbucket.org/izi/django-admin-tools/get/default.zip

在这里,master分支通常被命名为default。这将使您的requirements.txt安装速度更快。

其他一些答案提到将要安装的软件包放入您的时所需的变体requirements.txt。请注意,这个档案的语法,领先-e和落后#egg=blah-blah不是必需的,你可以只是简单粘贴URL,所以你requirements.txt的样子:

https://github.com/user/repository/archive/branch.zip

29
注意:从Django 1.9开始,Django随附了一个具有unicode filename的文件。点子扼流圈使用的拉链提取器。一个简单的解决方法是更换.zip.tar.gz,如焦油提取工作。
频谱

4
我想知道--depth 0克隆时是否可以通过pip 使其更有效(安装pip快照不需要整个git历史记录)。git-scm.com/docs/git-clone
cs01

6
这也适用于提交哈希!pip install https://github.com/django/django/archive/ebaa08b.zip
Fush

4
感谢您指出速度差异。我没有进行测试和比较,但是我相信速度差异确实存在,因为从分支进行安装仍将导致下载整个存储库历史记录,而从.zip(或.tar.gz)进行安装将仅导致下载存储库快照。
RayLuo

是否可以使用此语法安装其他功能?例如,我正在尝试安装github.com/apache/incubator-airflow @ master(正常的PyPI软件包是apache- airflow)以使用未发布的版本。我想将呼叫转换为pip install apache-airflow[crypto, slack]使用存档版本安装这些额外功能。我试过了,pip install https://github.com/apache/incubator-airflow/archive/master.zip[crypto, slack]但这破坏了URL和安装。
泰勒·埃德米斯顿

67

使用ssh凭证从专用存储库安装的说明:

$ pip install git+ssh://git@github.com/myuser/foo.git@my_version

51

只是要添加一个额外的内容,如果要在pip文件中安装它,可以这样添加:

-e git+https://github.com/tangentlabs/django-oscar-paypal.git@issue/34/oscar-0.6#egg=django-oscar-paypal

但是它将被保存为鸡蛋。


5
最好不使用它-e。请参阅:stackoverflow.com/a/34518202/451710
Eyal Levin

4
感谢您的评论,非常有趣。我认为人们倾向于使用该-e标志来避免与已经存在的程序包发生任何可能的冲突。我想这是一个选择的问题
Hassek

4
如果需要“额外”,则将其附加在片段中,例如:-e git+https://github.com/tangentlabs/django-oscar-paypal.git@issue/34/oscar-0.6#egg=django-oscar-paypal[PDF]
ankostis

请注意,-e实际上似乎并不需要。
泰勒·埃德米斯顿

由于某些原因,如果没有-e
Kurt Bourbaki,

4

您使用了egg文件的安装过程。该程序支持安装了gitgit+httpgit+httpsgit+sshgit+gitgit+file。其中提到了一些。

可以使用分支,标签或哈希值进行安装是很好的。

@Steve_K指出,使用“ git +”安装可能会很慢,并建议通过zip文件进行安装:

pip install https://github.com/user/repository/archive/branch.zip

或者,建议您使用该.whl文件(如果存在)进行安装。

pip install https://github.com/user/repository/archive/branch.whl

这是一种非常新的格式,比egg文件更新。它需要wheel和setuptools> = 0.8软件包。您可以在这里找到更多。


1
这个问题没有指定给github。archive / branch.zip的概念仅特定于github。
豪尔赫·雷涛

0

这就像魅力一样工作:

pip3 install git+https://github.com/deepak1725/fabric8-analytics-worker.git@develop

哪里:

发展:分支

fabric8-analytics-worker.git:回购

deepak1725:用户

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.