I generally just suggest having a  an ``__about__.py`` which contains only constants like versions and the such, which is imported into ``__init__.py`` and ``exec``d into ``setup.py``.

See: https://github.com/dstufft/warehouse/blob/master/setup.py

I find the more complicated you make the ``setup.py`` the more you end up regretting it :)