How can I specify library versions in setup.py?
In my setup.py
file, I've specified a few libraries needed to run my project:
setup(
# ...
install_requires = [
'django-pipeline',
'south'
]
)
How can I specify required versions of these libraries?
I'm not sure about buildout, however, for setuptools/distribute, you specify version info with the comparison operators (like ==
, >=
, or <=
).
For example:
install_requires = ['django-pipeline==1.1.22', 'south>=0.7']
You can add them to your requirements.txt
file along with the version.
For example:
django-pipeline==1.1.22
south>=0.7
and then in your setup.py
import os
from setuptools import setup
with open('requirements.txt') as f:
required = f.read().splitlines()
setup(...
install_requires=required,
...)
Reading from the docs -
It is not considered best practice to use
install_requires
to pin dependencies to specific versions, or to specify sub-dependencies (i.e. dependencies of your dependencies). This is overly-restrictive, and prevents the user from gaining the benefit of dependency upgrades.
https://packaging.python.org/discussions/install-requires-vs-requirements/#id5