当我执行“ pip install -e ...”以从git repo安装时,我必须指定#egg = somename或pip抱怨。例如:
pip install -e git://github.com/hiidef/oauth2app.git#egg=oauth2app
这个“蛋”字符串的意义是什么?
当我执行“ pip install -e ...”以从git repo安装时,我必须指定#egg = somename或pip抱怨。例如:
pip install -e git://github.com/hiidef/oauth2app.git#egg=oauth2app
这个“蛋”字符串的意义是什么?
Answers:
每点安装-h“ egg”字符串是在安装过程中检出的目录
project-name.egg-info/top_level.txt
应该已经创建了一个名为目录。使用此文件的内容作为egg
参数的值。
egg=...
设置是否真正重要。我正在安装的软件包在top_level.txt文件中有多个条目。我已经尝试过将其name
与脚本使用的kwarg匹配,setup.py
但也可以将其匹配为任意值。两种方法的结果似乎都是相同的。请注意,我正在使用pip install https://...
不需要的语法进行安装-e
。
您必须包含#egg = Package,这样pip才能知道该URL的期望值。参见https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support
pip install -h
,Source will be checked out into src/PACKAGE (lower-case) and installed in-place (using setup.py develop)
我不知道它在别处使用...
https://pip.pypa.io/zh_CN/stable/reference/pip_install/#vcs-support说:
pip使用其URL后缀“ egg =-”的“项目名称”组件的依赖关系逻辑在pip下载和分析元数据之前识别项目。蛋名称的可选“版本”组件在功能上并不重要。它仅提供有关使用哪个版本的信息。对于setup.py不在项目根目录中的项目,将使用“子目录”组件。“子目录”组件的值应该是从项目根目录到setup.py所在位置的路径。
据此,我推断出egg值仅用于依赖性检查,因此,我认为按照惯例,some-pypi-package-name
应使用包名称(即),而不要使用任何包含的文件夹(即some_pypi_package_name
)
一个Egg只是一些捆绑的python代码。在git网址中,egg是项目名称。 VCS支持
通常,我们从Pypi安装python软件包,因此您仅指定软件包名称和版本(如果未指定,则假定为最新版本)。然后,Pypi搜索您想要的鸡蛋,然后pip安装该鸡蛋。 pip install celery
将安装最新发布的鸡蛋,pip install celery[redis]
并安装包含相同celery软件包的其他鸡蛋,并从celery的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
将检出master分支并进行安装。即使您指定了版本号,在安装中也不会考虑。版本号被忽略
通过git或其他VCS网址进行安装时,您将需要查找所需版本的标签或哈希。例如,git+https://github.com/celery/celery.git@v4.3.0#egg=celery
它将签出标记为“ v4.3.0”的提交,然后从该源代码安装该软件包。假设维护人员没有过分地错误标记他们的存储库,则可以得到所需的版本。
pip install
文档的这一部分讨论#egg=name
,但是没有给出明确的答案。