[Distutils] python version information in .egg-info directory name
Phillip J. Eby
pje at telecommunity.com
Fri Jul 21 23:02:02 CEST 2006
At 01:32 PM 7/21/2006 -0700, Andrew Straw wrote:
>Upon re-reading the new Debian python policy, I see that the idea of
>having .py files installed in one tree for multiple python versions is
>optional (albeit "strongly encouraged" as stated at
>http://www.debian.org/doc/packaging-manuals/python-policy/ap-packaging_tools.html).
>So, I can personally continue to ignore this supposedly optional aspect
>of the new Debian Python policy, but I don't know for how long. For
>example, recent discussions on the debian-python list suggest to me that
>the use of this new policy is very strongly encouraged rather than
>merely "optional".
I read the entire policy you linked to, and I don't actually see many problems.
It seems to me that the single largest problem in that policy is that it
clearly predates the existence of the distutils. It has no conception of a
Python *project* or *distribution*, only modules and packages. It's
therefore not surprising that it also doesn't encompass such issues as
distribution metadata, package data, namespace packages, and the like. It
also explains why the policy is so out-of-sync with e.g. PyPI. (I hesitate
to see what would happen if somebody tries to package any of my Python
projects such as SymbolType or ProxyTypes for Debian: they all are modules
in the 'peak' package, but each is distributed as a separate project!)
From the extremely limited conceptual position that only modules and
packages exist, it's also impossible to understand how you can have
different versions of things for different versions of Python, because
everything is defined in terms of the modules! However, project
distributions are merely *composed* of modules, and what modules get
installed (or what distribution metadata is generated) may depend on the
Python version. The same project may also have different dependencies,
depending on the Python version.
These concepts can't be well-understood from the perspective that only
modules and packages exist, so until the policy's conceptual underpinning
is expanded, it's going to continue to be difficult to squeeze square pegs
into the policy's round holes.
>So, to ask your advice, then, how would _you_ suggest stdeb install
>Python packages using the Debian system? Plain old
>"--single-version-externally-managed" without any .egg-info directory
>renaming? That would be simple enough for me...
That is what I would recommend, yes. Installed, of course, to the standard
Python directories, rather than to a shared one, since that would lead to
conflicts when alternate versions exist.
I don't know enough about Debian to know what it does with package naming,
but I do know that e.g. NetBSD package naming conventions include the
Python version for which a project is packaged, such that you could have
py22-foo, py23-foo, and py24-foo of the same project "foo". IMO, any other
way of doing it is an accident waiting to happen... or else a "job
security" bonus for the people who write the tools and fix the problems. I
guess it's always better to look at it from the bright side. ;)
More information about the Distutils-SIG
mailing list