paylogic / pip-accel

pip-accel: Accelerator for pip, the Python package manager

Home Page:https://pypi.python.org/pypi/pip-accel

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Wheel binary format

rubik opened this issue · comments

Great tool!
Have you considered using Wheels as binary format? They're pretty advanced and got accepted through some PEPs. Here it is a couple of interesing links:

https://wheel.readthedocs.org
https://bitbucket.org/dholth/wheel

Hi Michele and thanks for the feedback! During the development of the first prototype of pip-accel we did play around with wheels for a day or two, because they seemed like the ideal solution. Unfortunately I think binary distributions are currently better suited because:

  1. The last time I checked wheels were only supported by a pip beta release;
  2. IIRC wheels as implemented by pip bundle all dependencies which does not match my use case (it's the wrong granularity level). I could process the wheels to split things up again, but before it comes to that I would simply go with binary distributions because they're supported everywhere.

If things mature a bit and there is a way around issue 2 I could see pip-accel using wheels in the future.

AFAIK wheels are a binary distribution.

  1. I think that the situation is the same (I don't know exactly what progress is being made on the pip front). Here however: http://www.pip-installer.org/en/wheel/usage.html it seems that wheel-related commands will be included in the next major pip version (1.4).
  2. Every wheel contains a single package and are more similar to the setuptools eggs than to pip bundles. Dependencies are not included and you have one wheel per package, which means dependencies will get each one a separated wheel. This makes things faster (e.g. when you don't want to download deps, &c.).

Of course, you're right, wheels are a binary distribution! With binary distribution I was specifically referring to the archive format created by python setup.py bdist_dumb but that was very implicit indeed. About every wheel containing a single package: That's good to hear, I guess I was confusing wheels and bundles.

It seems like in the future wheels can completely replace binary distribution archives created with bdist_dumb so I think I will prepare pip-accel to add support for wheels, make it optional, collect as much feedback as possible and then change the default binary distribution format to wheels, at which point I should be able to remove the nasty preprocessing of binary distribution archives created with bdist_dumb :-)

By the way, if features like this are accepted into mainline pip I wonder if there remains a place for pip-accel at all... Oh well, as long as we get reproducible environments that are fast to create I don't care (that much) which tool is used to do it.

pip now uses wheels by default, perhaps we don't need this anymore?

pypa/pip#2618