Specify extras_require with pip install -e

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.


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]"

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]"

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.

Tags:

Python

Git

Pip