I have package \"A\" with a setup.py and an extras_requires line like:
extras_require = {
\'ssh\': [\'paramiko\'],
},
And a package \"
This is suppported since pip 1.1, which was released in February 2012 (one year after this question was asked).
We use setup.py
and pip
to manage development dependencies for our packages, though you need a newer version of pip
(we're using 1.4.1 currently).
#!/usr/bin/env python
from setuptools import setup
from myproject import __version__
required = [
'gevent',
'flask',
...
]
extras = {
'develop': [
'Fabric',
'nose',
]
}
setup(
name="my-project",
version=__version__,
description="My awsome project.",
packages=[
"my_project"
],
include_package_data=True,
zip_safe=False,
scripts=[
'runmyproject',
],
install_requires=required,
extras_require=extras,
)
To install the package:
$ pip install -e . # only installs "required"
To develop:
$ pip install -e .[develop] # installs develop dependencies
The answer from @aaronfay is completely correct but it may be nice to point out that if you're using zsh
that the install command pip install -e .[dev]
needs to be replaced by pip install -e ".[dev]"
.