[Python-Dev] Packaging and binary distributions for Python 3.3

Paul Moore p.f.moore at gmail.com
Thu Oct 13 19:47:36 CEST 2011


On 13 October 2011 17:35, Éric Araujo <merwok at netwok.org> wrote:
> Le 11/10/2011 03:29, Nick Coghlan a écrit :
>> On Mon, Oct 10, 2011 at 2:29 PM, Paul Moore <p.f.moore at gmail.com> wrote:
>>> Ideally bdist_wininst and bdist_msi would also integrate with pysetup
>>> and with virtual environments, but I imagine that could be pretty hard
>>> to make work cleanly, as Windows doesn't really support multiple
>>> installations of a software package...
>> That's OK, the package managers get bypassed by pysetup on POSIX
>> systems as well - that's kind of the point of language level virtual
>> environments
> I’m not sure I follow you.  wininst and msi installers are supposed to
> work with the Windows programs manager, it is not bypassed at all IIUC.
>  That’s the difficulty: How to make the Add/Remove program aware of many
> Pythons and venvs?

There are 2 separate things here:

1. Native installers, bdist_msi and bdist_wininst. These (currently)
integrate with the Add/Remove feature and have a standard platform
look & feel. The downside is that they don't integrate to the same
level with certain Python features like venvs and pysetup, or with
non-system Python installations.
2. pysetup, which is Python's "native" package manager and as such can
be assumed to integrate well with any other Python features.

The Unix equivalent of (1) would be RPM installers for Python
packages. It's not so much about the GUI-ness as the native
integration (which on Windows does mean GUI, but less so on other
platforms).

It's the classic trade-off between integration with the platform vs
integration with the language environment. You can't usually have both
unless the language is single-platform.

>> There are hard to build packages on POSIX (e.g. PIL) that would also
>> benefit from a good, cross-platform approach to binary installation.
> We haven’t talked about cross-platform binary installers.  The current
> gist of the discussion seems to point to a world where people continue
> to release an sdist for capable OSes and also publish one bdist_simple
> with .pyd for one Windows version and one bdist_simple with .so for one
> Mac OS X version (but possible many arches).  (And given that it’s
> possible to have one setup.cfg and one setup.py coexisting, maybe eggs
> will be offered for a while too.)

Nick is talking about a cross-platform *approach* - not a single
installer that runs on multiple platforms, but rather a common set of
instructions ("run pysetup run bdist_simple; pysetup upload") which
will generate a binary package that can be installed in a common way
(pysetup install) on all platforms. The actual bdist_simple file will
be version, architecture and platform dependent, just like binary eggs
and bdist_winints installers today, but it can be used by people
without access to a compiler, or to development packages for
supporting libraries, or anything other than Python.

This is a good thing for most users (even the RPM for say lxml
includes binary so files, and doesn't build from source on the target
system), and nigh-on essential for most Windows users (where setting
up a compiler is a lot more complex than yum install gcc). It may even
be useful enough to persuade Windows users to move away from GUI
installers (after all, that's what has happened with setuptools and
binary eggs).

Paul.


More information about the Python-Dev mailing list