使用pip install -e指定extras_require

Phi*_*ero 40 python git pip

从git存储库安装时,如何管理使用pip安装extras_requires?

我知道pip install project[extra]当项目在pypi上时你可以做.
你必须pip install -e git+https://github.com/user/project.git#egg=project为git repo 做,但我没有设法找到如何将这两个选项链接在一起.

Ali*_*lik 53

这适用于远程回购:

pip install -e git+https://github.com/user/project.git#egg=project[extra]
Run Code Online (Sandbox Code Playgroud)

这对于当地人来说(感谢@ Kurt-Bourbaki):

pip install -e .[extra]
Run Code Online (Sandbox Code Playgroud)

  • @ankostis`pip install -e.[extra]`应该有效.如果你正在使用`zsh`,你需要转义方括号:`pip install -e.\ [extra \]`. (10认同)
  • 在 Windows 上,Powershell 会抱怨括号。只需将参数放在双引号之间,例如:`pip install -e ".[extra]"` (4认同)
  • 但是如果使用“pip install -e .”而不是 URL 会怎么样? (2认同)

Med*_*yed 17

对于某些用户来说,这可能并不明显,对我来说则不然,因此我想extra在以下命令中强调这一点

pip install -e ".[extra]"
Run Code Online (Sandbox Code Playgroud)

需要替换为额外要求的实际名称。

例子:

您可以按如下方式添加options.extras_require部分setup.cfg

[options.extras_require]
  test =
    pre-commit>=2.10.1,<3.0
    pylint>=2.7.2,<3.0
    pytest>=6.2.2,<7.0
    pytest-pspec>=0.0.4,<1.0
Run Code Online (Sandbox Code Playgroud)

然后你安装test额外的如下

pip install -e ".[test]"
Run Code Online (Sandbox Code Playgroud)


Mar*_*oft 8

重要的是要注意:你不应该在括号内或括号内有空格.即这不起作用:-e ". [extra1, extra2]"- 甚至作为requirements.txt文件中的一行,它不是那么明显.关于它的最糟糕的事情是,当你有空格时,额外的东西会被默默地忽略.


Ant*_*ods 5

从文件安装时这也适用whl,例如,您可以执行以下操作:

pip install path/to/myapp-0.0.1-py3-none-any.whl[extra1]
Run Code Online (Sandbox Code Playgroud)

这与文档相去甚远,而且不是特别直观。


chi*_*lub 5

要从 git安装project\ 的额外要求extra,更现代的语法是

\n
python -m pip install -e "project[extra] @ git+https://github.com/user/project.git"\n
Run Code Online (Sandbox Code Playgroud)\n

来源:在pip 文档 Examples中,请参阅“Install a package with extras”。

\n

通过当前接受的答案\xe2\x80\x94中的命令安装

\n
python -m pip install -e git+https://github.com/user/project.git#egg=project[extra]\n
Run Code Online (Sandbox Code Playgroud)\n

\xe2\x80\x94 将引发此警告:

\n
\n

弃用:git+https://github.com/user/project.git#egg=project[extra] 包含一个具有非 PEP 508 名称的 Egg 片段 pip 25.0 将强制执行此行为更改。可能的替代方法是使用 req @ url 语法,并删除 Egg 片段。讨论可以在https://github.com/pypa/pip/issues/11617找到

\n
\n