[Catalog-sig] PyPI looks down

M.-A. Lemburg mal at egenix.com
Thu May 26 22:11:05 CEST 2011

Carl Meyer wrote:
> On 05/21/2011 01:58 PM, M.-A. Lemburg wrote:
>> Carl Meyer wrote:
>>> On 05/21/2011 03:00 AM, Chris Withers wrote:
>>>> It install packages with C extensions yet?
>>> Sure, I do it every day. You just need a compiler.
>> ... and all the external dependencies such a package may have.
>> pip really needs to support a binary format to be more user
>> friendly in this respect in order to completely replace
>> easy_install and make use of all the eggs on PyPI.
> I would like to see a resolution to http://bugs.python.org/issue8654
> first; at the moment, I consider the use of binary packages on PyPI
> broken (particularly for Python 3, which pip now supports), because the
> finding mechanism can easily download an egg that doesn't work on your
> build of Python.

eggs mostly work for pure-Python packages and packages for Windows.

The situation for other platforms is less than ideal, mostly
because setuptools mainly relies on the egg file name alone,
which includes a non-canoncical platform name and doesn't
respect UCS2/UCS4 builds.

There are essentially two ways to fix this:

 1. standardize the egg filenames in a way that lets pip
    recognize compatible egg files

 2. add a mapping of egg filenames to a platform information
    dictionary which pip can download to select the right egg

Option 1:

"PEP 3149 - ABI version tagged .so files" could help with this
option, since it addresses the various Python build options.

We'd then only have to define a list or function which allows
checking the platform string embedded in the filename against
the platform running pip.

Such a function would be useful for other things as well,
especially on platforms that often change the platform
name like e.g. FreeBSD or Mac OS X and Solaris which add
universal builds to make things even more interesting.

Such a function would also be useful for other applications,
e.g. ones that try to determine plugin compatibility or
want to switch implementations based on the platform,
but not necessarily depending on the platforms OS version
or 32/64-bit variant.

The good news is that it's easy to come up with egg filenames
that easy_install does not recognize, so both egg filename
schemes could live side by side for a while.

Option 2:

This would allow more freedom and is easier to extend in the
future, but also requires more work, both on the PyPI side,
the distutils side and the client tools side.

Marc-Andre Lemburg

Professional Python Services directly from the Source  (#1, May 26 2011)
>>> Python/Zope Consulting and Support ...        http://www.egenix.com/
>>> mxODBC.Zope.Database.Adapter ...             http://zope.egenix.com/
>>> mxODBC, mxDateTime, mxTextTools ...        http://python.egenix.com/
2011-05-23: Released eGenix mx Base 3.2.0      http://python.egenix.com/
2011-05-25: Released mxODBC 3.1.1              http://python.egenix.com/
2011-06-20: EuroPython 2011, Florence, Italy               25 days to go

::: Try our new mxODBC.Connect Python Database Interface for free ! ::::

   eGenix.com Software, Skills and Services GmbH  Pastor-Loeh-Str.48
    D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg
           Registered at Amtsgericht Duesseldorf: HRB 46611

More information about the Catalog-SIG mailing list