[Distutils] Specifying version information once

Jean-Paul Calderone exarkun at divmod.com
Wed May 20 03:05:07 CEST 2009


On Tue, 19 May 2009 20:49:37 -0400, "P.J. Eby" <pje at telecommunity.com> wrote:
>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.

I don't think I'm ready to make setuptools a mandatory dependency yet.

>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.
>

That's an idea that's come up before.  I'm curious to here if anyone has
tried it and what their experiences have been.

Jean-Paul


More information about the Distutils-SIG mailing list