<div dir="ltr">On Wed, Feb 20, 2013 at 12:33 AM, Nick Coghlan <span dir="ltr"><<a href="mailto:ncoghlan@gmail.com" target="_blank">ncoghlan@gmail.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On Wed, Feb 20, 2013 at 10:18 AM, Daniel Holth <<a href="mailto:dholth@gmail.com">dholth@gmail.com</a>> wrote:<br>
> Wheel is only defined for 1 dist per archive.<br>
<br>
</div>Indeed. We did briefly discuss the idea of wheels-within-wheels<br>
somewhere along the line (it may even have been a private email<br>
conversation I had with Daniel about an early version of the wheel<br>
spec), but we ultimately decided it was an aspect of the problem<br>
better left until later.<br>
<br>
This was at least partly due to the fact that bundling dependencies is<br>
still evil in many situations, as it's a nightmare for security<br>
updates if you don't get the related packaging tool design right.<br>
<br>
If we do decide to tackle that use case for a hypothetical wheel 1.1<br>
release, I'd push for a literal wheels-within-wheels solution: add a<br>
{distribution}-{version}.dependencies folder to the spec, and dump the<br>
wheel archives for any bundled dependencies in there. Installation<br>
tools can then consider that folder as a possible source for<br>
distributions, in addition to already installed distributions and any<br>
online indexes. Once installed, updates would work normally, helping<br>
to avoid the "security updates for bundled distributions are<br>
difficult" problem.</blockquote><div><br></div><div style>Check out logstash. It is a huge Ruby application that uses lots of gems. Never mind that it is JRuby... the end user experience is that you download an archive, run it, wait, and it all works without any installing at all. Compare to installing an application into a new virtualenv with only a list of dependency names which is more like passing through death and fire.</div>
<div style><br></div><div style>Long story short there's potential here. It's been done before of course with things like py2exe but look! Wheel! Reinventing is the name of the game.</div><div style><br></div><div style>
For example you could write a __main__.py that would scan the archive for embedded wheels and add them to PYTHONPATH pkg_resources-style, choosing different platform-specific ones depending on the environment. Not sure if .whls would have to be a PEP format, it could just be a useful py2exe alternative / standalone Python application format. The current format was enough to keep us busy until now.</div>
</div></div></div>