关于python:配置,以便pip安装可以从github工作

Configuring so that pip install can work from github

我们希望使用PIP和GitHub将私有包安装到我们的生产服务器上。这个问题涉及到要成功安装Github repo需要具备哪些功能。

假设下面的命令行(它只验证良好并尝试安装):

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

产品名称中需要驻留哪些内容?它是使用sdist选项运行setup.py之后tar文件中通常包含的内容,还是实际的tar.gz文件,或者其他内容?

我在这里问是因为我试过几种不同的方法,但都做不到。感谢您的帮助。


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

名为foo的包将是:

1
2
3
4
5
foo # the installable package
├── foo
│   ├── __init__.py
│   └── bar.py
└── setup.py

从Github安装,如:

1
2
3
$ 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


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

简单的方法是使用包的zip存档。将/zipball/master添加到回购URL:

1
2
3
4
5
6
7
8
    $ 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...

这样,您就可以使PIP与Github源存储库一起工作。


如果您想使用requirements.txt文件,您需要git和下面的条目之类的东西匿名获取requirements.txt中的主分支。

对于常规安装:

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

对于"可编辑"安装:

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

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


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

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

然后以开发模式安装:

1
2
cd foo
pip install -e .

您可以更改任何您不想更改的代码,并且使用foo包的每个代码都将使用修改后的代码。

此解决方案有两个好处:

  • 您可以在家庭项目目录中安装包。
  • 包中包含.gitdir,所以它是常规的git存储库。你可以马上把叉子推过来。