当我从 git repo 执行“ pip install-e...”安装时,必须指定 # egg = somame 或 pip 牢骚。例如:
pip install -e git://github.com/hiidef/oauth2app.git#egg=oauth2app
这根“鸡蛋”绳子的意义是什么?
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”字符串是作为安装的一部分签出的目录
Https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support 说:
Pip 在其依赖逻辑中使用 url 后缀“ egg =-”的“ project name”组件来标识 在 pip 下载和分析元数据之前进行的项目 可选的“版本”组件的鸡蛋名称没有功能 它仅仅提供了一个人类可读的线索 对于 setup.py 不在 project 根目录中的项目, 使用“子目录”组件。“子目录”组件的值 应该是从项目根目录开始到其中 setup.py 的路径 位于。
由此我推断 egg 值只用于依赖性检查,因此我认为,按照惯例,应该使用包名(即 some-pypi-package-name) ,而不是任何包含的文件夹(即 some_pypi_package_name)
some-pypi-package-name
some_pypi_package_name
在 giturl 中,Egg 是项目名称
通常我们从 Pypi 安装 python 软件包,所以您只需指定软件包名称和版本(或者如果您不指定的话,它会假设是最新版本)。然后 Pypi 搜索你想要的鸡蛋,pip 安装它。pip install celery会安装最新发布的鸡蛋,而 pip install celery[redis]会安装一个不同的鸡蛋,其中包含相同的芹菜包,并且还会安装芹菜的 setup.py 中作为 redis 依赖项列出的任何包中的最新鸡蛋。
pip install celery
pip install celery[redis]
使用 git 和 gitlab 路径,可以指定 /{user|group}/{repository}.git@{tag}#egg={package-name}。#egg=celery和 #egg=celery[redis]是有区别的,但它们都来自同一个源代码。
/{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.
master
例如,git+https://github.com/celery/celery.git#egg=celery==4.3.0将检出主分支并安装它。即使您指定了版本号,也不会在安装中考虑它。版本号被忽略
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”的提交,然后从源代码安装包。假设维护人员没有严重地错误标记他们的存储库,您就可以得到您想要的版本。
git+https://github.com/celery/celery.git@v4.3.0#egg=celery
引用 手册:
Pip 查看 VCS URL 的两个片段: egg: For specifying the “project name” for use in pip’s dependency 解析逻辑。例如: egg = project _ name 子目录: 用于指定 Python 包的路径,当 不在 VCS 目录的根目录中
Pip 查看 VCS URL 的两个片段:
egg: For specifying the “project name” for use in pip’s dependency 解析逻辑。例如: egg = project _ name
子目录: 用于指定 Python 包的路径,当 不在 VCS 目录的根目录中