使用 pip install-e 指定 extas_need

当从 git 存储库安装时,如何使用 pip 来安装 excas _ demand?

我知道你可以做 pip install project[extra]当项目是在皮皮。
你必须做 pip install -e git+https://github.com/user/project.git#egg=project的 git 回购,但我没有设法找到如何将这两个选项联系在一起。

33874 次浏览

This should work, per example #6

For remote repos:

pip install -e git+https://github.com/user/project.git#egg=project[extra]

And this for local ones (thanks to @Kurt-Bourbaki):

pip install -e .[extra]

As per @Jurt-Bourbaki:

If you are using zsh you need to escape square brackets or use quotes:

pip install -e .\[extra\]
# or
pip install -e ".[extra]"

Important to notice: you should not have whitespaces around or within brackets. I.e. this will work: -e ".[extra1,extra2]" but this won't: -e ". [extra1, extra2]" - and even as a row in requirements.txt file, where it is not so obvious. The worst thing about it is that when you have whitespace, extras are just silently ignored.

This also works when installing from a whl file so, for example, you can do:

pip install path/to/myapp-0.0.1-py3-none-any.whl[extra1]

This is very far from clear from the docs, and not particularly intuitive.

Using git + ssh to install packages with extras from private repositories:

pip install -e 'git+ssh://git@github.com/user/project.git#egg=project[extra1,extra2]'

It may not be obvious for some users, and wasn't for me, so thought to highlight that extra in the following command

pip install -e ".[extra]"

needs to be replaced by the actual name of the extra requirements.

Example:

You add options.extras_require section to your setup.cfg as follows:

[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

Then you install the test extra as follows

pip install -e ".[test]"