配置,以便可以从github进行pip安装


226

我们想在github上使用pip将私有软件包安装到我们的生产服务器上。这个问题关系到github存储库中需要什么才能使安装成功。

假设使用以下命令行(可以正常身份验证并尝试安装):

pip install git+ssh://git@github.com/BlahCo/search/tree/prod_release_branch/ProductName

ProductName中需要驻留什么?是使用sdist选项运行setup.py之后,tar文件中通常包含的内容,还是实际的tar.gz文件或其他内容?

我在这里问是因为我尝试了几种变体,但无法使其正常工作。任何帮助表示赞赏。

Answers:


290

您需要整个python软件包,其中包含一个setup.py文件。

名为的软件包为foo

foo # the installable package
├── foo
   ├── __init__.py
   └── bar.py
└── setup.py

然后像这样从github安装:

$ pip install git+https://github.com/myuser/foo.git@v123
or
$ pip install git+https://github.com/myuser/foo.git@newbranch

有关更多信息,访问https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support


3
以上工作,非常感谢。但是,如果我在仓库中的子目录中发布了,该怎么办呢,而不是foo.git我正在寻找foo / releases / ProductVer。那有可能吗?非常感谢您的帮助!
ccgillett 2011年

4
不,不可能。pip仅从根存储库目录安装,至少对于git。不知道颠覆行为如何...
Hugo Tavares

3
如果您想通过ssh和private repos进行此操作,请
Jonathan

为什么没有将-e选项(可编辑模式)传递给pip?
Amelio Vazquez-Reina

14
这是新的url方案:pip install git+https://github.com/pypa/pip.git 来源:pip Github回购
13年

111

我不得不从github repo安装时遇到了类似的问题,但又不想安装git等。

最简单的方法是使用软件包的zip存档。添加/zipball/master到仓库URL:

    $ pip install https://github.com/hmarr/django-debug-toolbar-mongo/zipball/master
Downloading/unpacking https://github.com/hmarr/django-debug-toolbar-mongo/zipball/master
  Downloading master
  Running setup.py egg_info for package from https://github.com/hmarr/django-debug-toolbar-mongo/zipball/master
Installing collected packages: django-debug-toolbar-mongo
  Running setup.py install for django-debug-toolbar-mongo
Successfully installed django-debug-toolbar-mongo
Cleaning up...

这样,您将使ip可以与github源存储库一起使用。


2
这是在Windows下也适用的唯一答案
divenex

如何使用私有存储库完成此操作?(根据问题的要求)
Rodrigo E. Principe

29

如果您要使用requirements.txt文件,则需要使用git类似下面的条目的名称匿名获取您的中的master分支requirements.txt

对于常规安装:

git+git://github.com/celery/django-celery.git

对于“ 可编辑 ”安装:

-e git://github.com/celery/django-celery.git#egg=django-celery

可编辑模式将项目的源代码下载到./src当前目录中。它允许pip freeze输出包的正确github位置。


3
鸡蛋的名字从哪里来?在用github repo替换pip软件包后,它无法在django中加载软件包
holms

@holms setup.py中的查找名称
wieczorek1990

什么#egg=django-celery啊 那是占位符吗?
enchance

@enchance这是程序包名称。
wieczorek1990

13

克隆目标存储库的方式与克隆任何其他项目相同:

git clone git@github.com:myuser/foo.git

然后以开发模式安装它:

cd foo
pip install -e .

您可以更改不需要的任何内容,使用foo包的每个代码都将使用修改后的代码。

该解决方案有两个好处:

  1. 您可以在主项目目录中安装软件包。
  2. 软件包包括.git目录,因此它是常规的Git存储库。您可以立即将叉子推入。

2
我可以证明这个解决方案是神奇的。就我而言,我想继续学习pip,所以我克隆了pip存储库,创建了virtualenv,将其激活,然后执行了pip install -e .。然后pip在virtualenv中处于开发模式!令我印象深刻的是,即使包管理器本身也可以使用。
拉登·罗斯伯勒

这很棒!我注意到,当我使用此方法安装并运行时pip list,所涉及的软件包具有对Git分支的引用以及从其安装的绝对路径。它会保留对它们的引用吗?还是可以删除源?
MadPhysicist

0

您可以在Colab中尝试这种方式

!git clone https://github.com/UKPLab/sentence-transformers.git
!pip install -e /content/sentence-transformers
import sentence_transformers
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.