[Distutils] setup_requires for dev environments
Ben Finney
ben+python at benfinney.id.au
Thu Mar 19 03:21:42 CET 2015
Chris McDonough <chrism at plope.com> writes:
> FWIW, this particular use case (retrieving the version by importing it
> or a function that returns it after it reads a file or whatever), is
> dodgy. It's way better that code that needs version info inside the
> package consult pkg_resources or some similar system:
>
> import pkg_resources
> version = pkg_resources.get_distribution('mydistro').version
That's all fine once the distribution is *installed*, and I agree
‘pkg_resources’ is appropriate for querying the version of an
already-installed Python distribution.
But the whole point here (AIUI) is that the ‘setup.py’ is responsible
for storing that information in the distribution. And ‘setup.py’ may
need to import third-party modules in order to get the version
information.
For many projects, the version information is best stored in a central
place and ‘setup.py’ is just one consumer of many for that information.
Getting the version information may itself need distributions installed
(e.g. in my case, Docutils).
> I realize there are other use cases that setup_requires solves, and
> that using pkg_resources can be a performance issue.
The issue isn't importing ‘pkg_resources’. The issue is generating the
distribution, which ‘pkg_resources’ can't help with.
> Python packaging should be able to provide them this information, they
> should not need to provide it themselves.
Once the distribution is installed: I agree.
While generating the distribution – the point where ‘setup_requires’ is
meant to help – no, I disagree. We're trying to get information such
that it can be fed to Distutils, since Distutils can't know until it's
told.
--
\ “Nothing exists except atoms and empty space; everything else |
`\ is opinion.” —Democritus |
_o__) |
Ben Finney
More information about the Distutils-SIG
mailing list