To clarify:

`requires` is a setup keyword originally belonging to plain distutils--it should be a list of Python *module* names, and *not* the `DistributionName (version)` specifiers introduced by setuptools.  No tools were ever implemented that used `requires` for anything, and it's considered essentially meaningless.  In principle it can be used to list other Python modules yours depends on, but it would have to be an exhaustive list to be at all consistent.  It has no direct analog in the new packaging metadata PEPs that are being developed.

`install_requires` is the thing setuptools added that actually does do something.  It's where you can list the aforementioned `DistributionName (version)` specifiers that are the package distributions your package depends on to run.  This is where easy_install (originally) and now pip look to determine dependencies.

`setup_requires` does do something but it's not applicable here.  It's for build-time dependencies.  The irony is you have to run `setup()` in order to get them, so you can't import from any of them in your setup.py itself (they would instead provide functionality via entry_points--see the APE4 draft for a discussion of this).