[Distutils] Dynamic linking between Python modules
Paul Moore
p.f.moore at gmail.com
Thu May 21 22:12:18 CEST 2015
On 21 May 2015 at 20:26, Chris Barker <chris.barker at noaa.gov> wrote:
> Now that I think about it, it may seem kludgy, but conda packages can be
> built from wheel right now, with no special tools. A conda recipe that
> simply installs a wheel in it's build script would do just that.
That sounds about right, from what I've seen of conda builds. You
could probably do better (for example, by just repacking the wheel
rather than going through the whole wheel install process) but you
don't have to.
Some possible problem areas - when you install a wheel, it will
install executable wrappers for the entry points (like pip.exe) which
are tied to the install location. You'd need to deal with that. But
presumably conda already has to deal with that because setuptools does
precisely the same.
> I'm still a bit confused about the role of wheel here. Why build a wheel,
> just so you can go install it, rather than simply install the package
> directly?
Basically, because you can't "simply install". You may not have a
compiler, or you may not have the required libraries, etc etc.
Don't forget, you can build a wheel once, then install it anywhere
that has a compatible Python installation. I'm surprised this isn't
obvious to you, as isn't that precisely what conda does as well?
Also, installing from a wheel is a *lot* faster than installing from
sdist - people who deploy lots of packages to multiple servers or
virtualenvs greatly appreciate the extra speed of a wheel install.
That's why pure-python wheels are worth having, even though you could
install from source.
Also, so you don't need any install-time only requirements (e.g.
setuptools) on the target production system.
Generally, pretty much all of the reasons people don't compile all
their software on their production machines :-)
Paul
More information about the Distutils-SIG
mailing list