为什么#鸡蛋=富时从混帐回购PIP-安装(Why #egg=foo when pip-install

2019-07-30 20:11发布

当我做了一个“画中画安装-e ......”从git仓库安装,我必须指定#蛋= somename或PIP抱怨。 例如:

pip install -e git://github.com/hiidef/oauth2app.git#egg=oauth2app

这是什么“蛋”串的意义是什么?

Answer 1:

每点安装-h“蛋”的字符串是被检查出为安装部分的目录



Answer 2:

你必须包括鸡蛋#=封装使PIP知道要期望在该URL的内容。 见https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support

更多的蛋



Answer 3:

https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support说:

URL后缀的“项目名”部件“蛋= - ”是用来通过PIP在其依赖逻辑,以确定对PIP下载和分析所述元数据之前该项目。 鸡蛋名称的可选的“版本”组件并不功能很重要。 它只是提供了一个人类可读的线索,正在使用什么版本。 对于那些setup.py是不是在项目的根目录的项目,“子目录”组件使用。 “子目录”分量的值应该从项目到setup.py位于的根开始的路径。

由此我推断,鸡蛋值仅用于相关性检查,因此,我认为,按照惯例,包名(即some-pypi-package-name )应该被使用,不包含任何文件夹(即some_pypi_package_name



Answer 4:

一个鸡蛋只是一些捆绑Python代码 。 在git的URL,鸡蛋是项目的名称。 VCS支持

通常我们从PyPI将安装Python包,所以只指定包名称和版本(或者它假定最新版本,如果你不指定)。 PyPI将然后搜索你想要的鸡蛋和PIP将安装。 pip install celery会安装最新公布的鸡蛋和pip install celery[redis]将安装含有相同的芹菜包,也安装来自任何包被列为依赖于芹菜的setup.py的Redis的最新鸡蛋不同的鸡蛋。

使用Git和gitlab路径,您可以指定/{user|group}/{repository}.git@{tag}#egg={package-name} 之间存在差异#egg=celery#egg=celery[redis] ,但它们都将来自相同的源代码来。

“标签”也可以是分公司或承诺,除了散到实际的标签。 它被认为是master ,如果你不指定。

例如, git+https://github.com/celery/celery.git#egg=celery==4.3.0想看看主分支和安装。 即使你指定一个版本号,它没有考虑到安装。 版本号被忽略

当通过混帐或其他VCS网址安装,你会希望找到你所需要的版本标签或哈希值。 例如, git+https://github.com/celery/celery.git@v4.3.0#egg=celery这将检出的提交标记的“V4.3.0”,然后从该源代码安装软件包。 假定维护者并没有严重错误标签的存储库,你可以得到你想要这样的版本。



文章来源: Why #egg=foo when pip-installing from git repo