[Distutils] Specifying version information once
P.J. Eby
pje at telecommunity.com
Wed May 20 02:49:37 CEST 2009
At 04:28 PM 5/19/2009 -0400, Jean-Paul Calderone wrote:
>On Tue, 19 May 2009 16:23:16 -0400, "P.J. Eby" <pje at telecommunity.com> wrote:
>>At 02:21 PM 5/19/2009 -0400, Jean-Paul Calderone wrote:
>>>What is the recommendation for specifying version information in a way which
>>>is compatible with all these new tools?
>>
>>Don't import the file with your version info; execfile() it instead.
>>
>>That is, you can have a somepackage.version module for importing,
>>but from within your setup.py, do
>>execfile('somepackage/version.py') instead, so as to avoid actually
>>importing your package (and anything it depends on).
>
>execfile() doesn't set __name__ properly; setting __name__ in a namespace
>passed to execfile() produces a CPython SystemError. At the moment my
>version code depends on __name__ being set. I'm sure I could work around
>this, but it'd be better if I didn't have to worry about code in the
>version module being executed in two unrelated contexts. Any other
>suggestions?
Well, if you're okay with depending on setuptools, you could have
your version code do this:
version = pkg_resources.require('ThisProject')[0].version
And *only* define the version in setup.py, but don't import or run that code.
Of, if you can't depend on setuptools (no pun intended), the only
other thing I can think of would be to put the version in a text file
by itself, and have both the version code and setup.py read that file.
More information about the Distutils-SIG
mailing list