Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wheel binary package format #684

Closed
wants to merge 68 commits into from
Closed

Wheel binary package format #684

wants to merge 68 commits into from

Conversation

dholth
Copy link
Member

@dholth dholth commented Sep 24, 2012

Experimental support for the wheel package format in pip. Can be used to realize dramatic reductions in install time.

ptone and others added 30 commits April 3, 2011 06:45
the tar libraries choke when checking valid
filenames because they don't resolve symlinks
@rubik
Copy link

rubik commented Sep 26, 2012

I think adding a new command is reasonable here. Much like bundle does: since the core functionality are required that's doable by subclassing the install command and adding options to it.

@qwcode: I think idea #1 does not make much sense: why bothering with the finder (which, BTW, takes ages checking tons of useless links) when you have a cache out there. I'm +1 on idea 2: check the cache and then only if the package is not there look for links in the index.

@dholth
Copy link
Member Author

dholth commented Sep 26, 2012

@qwcode you would never get all the way to setup.py install and then check the wheel cache. Instead, the finder downloads and installs the wheel instead of the sdist.

We will have to make sure that the "populate a directory full of wheels" command will also download wheels directly from pypi and put them in that directory.

The new command is a more useful replacement for bundle.

@qwcode
Copy link
Contributor

qwcode commented Sep 26, 2012

you would never get all the way to setup.py install and then check the wheel cache.

@dholth in the abstract world of idea1 you would : ). the point of idea1 was mostly to distinguish it from idea2, which is better, but also to be clear that neither idea1 or idea2 was what was in this pull. This was in response to Paul's post who seemed to be maybe thinking in idea1 terms.

why bothering with the finder (which, BTW, takes ages checking tons of useless links)
when you have a cache out there. I'm +1 on idea 2

@rubik , for the scope of this pull, I think we should/have-to be satisfied with the "--no-index --find-links" approximation I mentioned. Considering caching that's not just "download" caching is better left as a dedicated effort in another pull. here's a discussion that covers a lot of the territory: https://groups.google.com/forum/#!msg/python-virtualenv/J92cKpftSjA/i9zSae8zV3AJ

@carljm
Copy link
Contributor

carljm commented Sep 26, 2012

I think the idea of a local cache that precedes PackageFinder is interesting in its own right, but entirely orthogonal to wheels. Wheels are just another package distribution format. Any type of new caching feature should work equally well with wheels or sdists, and shouldn't be tied specifically to wheels in the UI or implementation.

@dholth
Copy link
Member Author

dholth commented Sep 26, 2012

PackageFinder is not preceded. It is still doing everything it did before, except it has a tiny patch belied by the large number of commits in the patch that lets it use .whl in addition to .tar.gz and .zip

You could and some people do populate the same local directory with sdists instead of wheels, and use --no-index --find-links there.

@carljm
Copy link
Contributor

carljm commented Sep 26, 2012

@dholth I wasn't talking about the current pull request, I was just replying to the speculation about hypothetical additional caching features in the last few posts (which should probably move to the mailing list).

I do use --no-install --find-links with sdists in all of my projects today; that's effectively similar to a "cache that precedes PackageFinder", though not quite - with something called a "cache" you'd expect it to do pass-through and auto-population.

@dholth
Copy link
Member Author

dholth commented Sep 26, 2012

Sure. We will stop calling it a cache post haste.

The two phase workflow is great for me. You only ping the index when you want to test new versions of dependencies.

On Sep 26, 2012, at 12:06 PM, Carl Meyer notifications@github.com wrote:

@dholth I wasn't talking about the current pull request, I was just replying to the speculation about hypothetical additional caching features in the last few posts (which should probably move to the mailing list).

I do use --no-install --find-links with sdists in all of my projects today; that's effectively similar to a "cache that precedes PackageFinder", though not quite - with something called a "cache" you'd expect it to do pass-through and auto-population.


Reply to this email directly or view it on GitHub.

@dholth
Copy link
Member Author

dholth commented Sep 26, 2012

If travis wasn't broken...

@qwcode
Copy link
Contributor

qwcode commented Sep 28, 2012

@dholth , @carljm :
here's a thought. break this into 2 pulls. one for install and one for the build tool.
the install portion was ready I think, but the new subcommand could take awhile.
and ideally the install pull could have a lean set of commits (i.e < 62)

@carljm carljm mentioned this pull request Sep 28, 2012
@qwcode
Copy link
Contributor

qwcode commented Sep 30, 2012

@dholth , I'm willing to do the work to carve out a new pull just for the install portion.
I'd put your name on the commit(s) and get it merge ready. ok?

@dholth
Copy link
Member Author

dholth commented Sep 30, 2012

I'd appreciate it. Credit Rubik and pfmoore too of course.

On Sep 30, 2012, at 1:53 AM, Marcus Smith notifications@github.com wrote:

@dholth , I'm willing to do the work to carve out a new pull just for the install portion.
I'd put your name on the commit(s) and get it merge ready. ok?


Reply to this email directly or view it on GitHub.

@qwcode
Copy link
Contributor

qwcode commented Sep 30, 2012

ok, will do. hopefully, in a couple of days. will shout out to the interested parties when it's ready.

@pnasrat
Copy link
Contributor

pnasrat commented Oct 1, 2012

@qwcode looking forward to it.

@pfmoore
Copy link
Member

pfmoore commented Oct 1, 2012

I've just tested the current patch and there's one issue that ought to be investigated. As it stands, it doesn't check the available wheels to determine which ones are compatible with the current Python. So it can install a 1.1 64-bit build into a 32-bit Python, because there's a 64-bit 1.1 available but only 1.0 in 32-bit.

Also, it doesn't rank wheels by compatibility, so it can install a "py33" wheel where there is also a "cp33" wheel. This could result in installing a version without C accelerators when the version with them is also available.

@dholth
Copy link
Member Author

dholth commented Oct 1, 2012

https://bitbucket.org/dholth/pep425tags has the relevant tags. See also https://github.com/dholth/pip/blob/develop/pip/index.py#L335

Note that I have a branch called 'wheel' that has the newest stuff; it is easy to pull develop by accident. The changes don't affect the compat tags issue at all.

@qwcode
Copy link
Contributor

qwcode commented Oct 1, 2012

As it stands, it doesn't check the available wheels to determine which ones are compatible with the current Python

if you read way up in the conversation, we (or at least I was) were willing to accept the lack of tag awareness (other than python version) at first in the "experimental" support, but certainly would like to see it soon.

for awhile at atleast using wheels will largely be a local thing. the user will be the one generating their own wheels and using them locally, so they're going to know what they have.

@dholth
Copy link
Member Author

dholth commented Oct 1, 2012

Closing pull request. Rebased.

@dholth dholth closed this Oct 1, 2012
@lock lock bot added the auto-locked Outdated issues that have been locked by automation label Jun 5, 2019
@lock lock bot locked as resolved and limited conversation to collaborators Jun 5, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
auto-locked Outdated issues that have been locked by automation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants