I have a program that uses dateutil
from the package index. I would like to have setup.py check for for its presence and try to get it using easy_install
if it is not there.
The documentation for distutils
seems to indicate that this can be done using the requires
keyword in setup()
, but when I try, it installs on a system without dateutil
without giving a warning or installing the required package.
The only thing I could find on google was this blog post about the same issue which did not have any answer either.
Am I using distutils
wrong? Do I need to subclass distutils.command.install
and do the checking/installing myself?
Automatic downloading of dependencies is a feature introduced by setuptools which is a third-party add-on to distutils
, in particular, the install_requires
argument it adds. See the setuptools documentation for more information.
Another option is to use requirements.txt
file with pip rather than using easy_install
as a package installer. pip
has now become the recommended installer; see the Python Packaging User Guide for more information.
Update [2015-01]: The previous version of this answer referred to the distribute
fork of setuptools
. The distribute
fork has since been merged back into a newer active setuptools
project. distribute
is now dead and should no longer be used. setuptools
and pip
are now very actively maintained and support Python 3.