为什么 # egg = foo 从 git repo 安装 pip

当我从 git repo 执行“ pip install-e...”安装时,必须指定 # egg = somame 或 pip 牢骚。例如:

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

这根“鸡蛋”绳子的意义是什么?

48038 次浏览

You have to include #egg=Package so pip knows what to expect at that URL. See https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support

更多关于鸡蛋

Per pip install-h“ egg”字符串是作为安装的一部分签出的目录

在 giturl 中,Egg 是项目名称

通常我们从 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]是有区别的,但它们都来自同一个源代码。

"tag" can also be a branch or commit hash in addition to an actual tag. It is assumed to be master if you do not specify.

例如,git+https://github.com/celery/celery.git#egg=celery==4.3.0将检出主分支并安装它。即使您指定了版本号,也不会在安装中考虑它。版本号被忽略

当通过 git 或其他 VCS URL 安装时,您将希望找到所需版本的标记或散列。例如,git+https://github.com/celery/celery.git@v4.3.0#egg=celery将签出标记为“ v4.3.0”的提交,然后从源代码安装包。假设维护人员没有严重地错误标记他们的存储库,您就可以得到您想要的版本。

引用 手册:

Pip 查看 VCS URL 的两个片段:

egg: For specifying the “project name” for use in pip’s dependency 解析逻辑。例如: egg = project _ name

子目录: 用于指定 Python 包的路径,当 不在 VCS 目录的根目录中