The neat thing about wheel is that you can install them without having the software used to build them. So we might try to provide a very simple wheel installer script with Python that did not even depend on DistUtils. You would be able to install pip etc with that tool. There is no need to put wheel directly into DistUtils.
On 4 Feb 2013 00:54, "Paul Moore" <p.f....@gmail.com> wrote:
>
> On 3 February 2013 14:41, Daniel Holth <dho...@gmail.com> wrote:
> > The neat thing about wheel is that you can install them without having the
> > software used to build them. So we might try to provide a very simple wheel
> > installer script with Python that did not even depend on DistUtils. You
> > would be able to install pip etc with that tool. There is no need to put
> > wheel directly into DistUtils.
>
> The other side of the equation, adding a bdist_wheel command to
> distutils should *also* be simple. As command classes are essentially
> independent code, it's not even really going to violate whatever
> remains of the "distutils is frozen" philosophy.
>
> Is there any mileage to submitting a patch to the Python stdlib that
> implements a bdist_wheel distutils subcommand and a wheel installer in
> the stdlib? I'm willing to write that patch based on Daniel's existing
> wheel code if no-one else is willing to, but only if there's likely to
> be some level of support from python-dev (for example, if Antoine and
> Nick are in general agreement on the principle, I'd be willing to
> write the code and we could see where the subsequent debate leads).
Adding a bdist_wheel command makes sense to me, and I agree it is the kind of change that shouldn't cause setuptools any grief. The original trigger for the distutils freeze was a ban on internal refactoring, so new features that don't alter internal APIs should be fine.
My one real concern at this point is the signature scheme. We definitely need one, so dropping it from the PEP isn't an option, but the choice of JWS over S/MIME worries me. The two acceptable options I currently see are to wait until JWS is approved by the IETF, or wait until an S/MIME based wheel implementation is available. I'd love to be able to just accept the wheel format as it stands, but absent a compelling pro-JWS story in the PEP, it isn't going to happen :(
I'd also hold off on a wheel downloader for now, that side of things is likely to be affected if/when distlib gets proposed for 3.4.
>
> Paul
> _______________________________________________
> Python-Dev mailing list
> Pytho...@python.org
> http://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe: http://mail.python.org/mailman/options/python-dev/ncoghlan%40gmail.com
I don’t have a problem with Nick improving the PEP and deciding on its
acceptance.
Le 03/02/2013 07:48, Antoine Pitrou a écrit :
> On Sun, 3 Feb 2013 12:34:36 +0000
> Paul Moore <p.f....@gmail.com> wrote:
>> So it's perfectly possible to use wheels right now, without the pip
>> integration. But the pip developers don't want to integrate the wheel
>> format just because it exists - they want the assurance that it's an
>> accepted format supported by PEPs, hence the interest in getting the 3
>> wheel PEPs (of which the metadata PEP is the first) accepted.
>
> But it's an "accepted format" by whom? If we accept the PEP but refuse
> to integrate support in the stdlib, it doesn't make much sense.
There’s a chicken and egg problem: python-dev could have waited a year
or two to see the wheel format being used and fixed/improved before
deciding to do something in the stdlib, but the pip maintainers wanted
an official blessing first. Accepting the wheel PEP would mean that
python-dev and the community think wheels are an interesting way
forward, and after some time needed to find out what fixes and
improvements are needed, python-dev is ready to add stable, official
support in the stdlib.
(I know Daniel Holth is frustrated by the wait for what he sees as a
simple format that’s been stable since last year, but it’s really not
long for stdlib inclusion, and there *are* things to sort out.)
> I vote for removing the "distutils is frozen" principle.
I’ve also been thinking about that. There have been two exceptions to
the freeze, for ABI flags in extension module names and for pycache
directories. When the stable ABI was added and MvL wanted to change
distutils (I don’t know to do what exactly), Tarek stood firm on the
freeze and asked for any improvement to go into distutils2, and after
MvL said that he would not contibute to an outside project, we merged d2
into the stdlib. Namespace packages did not impact distutils either.
Now that we’ve removed packaging from the stdlib, we have two Python
features that are not supported in the standard packaging system, and I
agree that it is a bad thing for our users.
I’d like to propose a reformulation of the freeze:
- refactorings for the sake of cleanup are still shunned
- fixes to really old bugs that have become the expected behavior are
still avoided
- fixes to follow OS changes are still allowed (we’ve had a number for
Debian multiarch, Apple moving stuff around, Windows manifest options
changes)
- support for Python evolutions that involve totally new code, commands
or setup parameters are now possible (this enables stable API support
as well as a new bdist format)
- behavior changes to track Python behavior changes are now possible
(this enables recognizing namespace packages, unless we decide they
need a new setup parameter)
We’ll probably need to talk this over at PyCon (FYI I won’t be at the
language summit but I’ll take part in the packaging mini-summit planned
thanks to Nick).
Regards
My position is that these days distutils doesn't belong in the standard library any more than Django does. So I am mildly opposed to supporting it when you should be using better designed third party tools like Bento or setuptools. Wheel makes it possible for Python to get out of the build tool business. Just install your preferred tools with a concise bootstrap installer.
Le 03/02/2013 13:57, Daniel Holth a écrit :
> My position is that these days distutils doesn't belong in the standard
> library any more than Django does.
You can install anything you want, but first you need an installer. I
think that a language needs packaging formats and basic build and
install tools in its stdlib. You can use different tools for
specialized needs or tastes, but I think years and years of frustration
show that people need a basic thing working out of the box.
> So I am mildly opposed to supporting it when you should be using better
> designed third party tools like Bento
Aside: can we keep the discussion civil instead of constantly bashing
distutils and heaping praise on one tool? (It happened with
easy_install before bento.) I’m the first one to recognize that
distutils has deep flaws, but I respect the time and energy that many
people have put into it.
> Wheel makes it possible for Python to get out of the build tool
> business. Just install your preferred tools with a concise bootstrap
> installer.
Looks like we agree that a basic tool able to bootstrap the packaging
story is needed :)
Regards
_______________________________________________
Python-Dev mailing list
Pytho...@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: http://mail.python.org/mailman/options/python-dev/dev-python%2Bgarchive-30976%40googlegroups.com
Bento is the only available packaging tool to heap praise onto and it is impressive. I am reacting to all the hate heaped on setup tools when I think the underlying DistUtils design is a big part of the problem. My feeling is that stdlib packaging tools should be for bootstrapping and reference, more like wsgiref than django.
Wheel is very similar to egg but tries to solve the original setup tools sin of installing something you don't want (the entire setuptools build system) by omitting the runtime component. The result is a very reviewable couple hundred lines bootstrap installer or "unzip" in a pinch. Its also built upon Python standards that were not available when easy_install was introduced.
The pip integration is basically to allow pip to find wheels on PyPI
or any local indexes you have, and to install them via the "pip
install" command.
$ python wheel-0.14.0-py2.py3-none-any.whl/wheel -h
usage: wheel [-h] {keygen,sign,verify,unpack,install,convert,help} ...They can be signed with pypi detached signatures already. It works now exactly as for sdist.
The innovation was supposed to be in convenience for the signer, in allowing keys to be trusted per package and for a list of dependencies and the expected signing keys to be shared easily. Does anyone have a concise pure py3 s/mime implementation?
> Looks like we agree that a basic tool able to bootstrap the packaging
> story is needed :)
Agreed. Just because distutils can't easily/reliably build things that are
better built with SCons/WAF/tup/whatever, doesn't mean that we shouldn't have
the ability to build pure-Python distributions and distributions including C
libs and extensions, with the ability to extend easily by third-party tools. It
just needs to be done in a way which is easy to build on, so the included
battery stays small and simple. Easier said than done, I know :-)
Regards,
Vinay Sajip
He is being self deprecating. Its also true that python dev can't recommend bento wholesale. That is fine with me.
Another couple of key pieces are "Setup-Requires-Dist" and the extension mechanism in PEP 426 - they're intended to make it easier to communicate the use of third party tools for building, packaging and installation, as well as making it easier to provide additional metadata for the benefit of those tools.
Cheers,
Nick.
>
> David
> _______________________________________________
> Python-Dev mailing list
> Pytho...@python.org
> http://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe: http://mail.python.org/mailman/options/python-dev/ncoghlan%40gmail.com
+1 on lifting the freeze from me.
--
Marc-Andre Lemburg
eGenix.com
Professional Python Services directly from the Source (#1, Feb 04 2013)
>>> Python Projects, Consulting and Support ... http://www.egenix.com/
>>> mxODBC.Zope/Plone.Database.Adapter ... http://zope.egenix.com/
>>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/
________________________________________________________________________
::::: Try our 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
http://www.egenix.com/company/contact/
It’s part in notes from the PyCon 2010 Language Summit, part in
unwritten policy in the heads of people involved in distutils bugs these
last years.
> If not, can someone state it precisely (e.g.
> what's allowed to change and what's not)?
Bug fixes are possible; changes to keep working with Python (i.e. pyc
files are generated in pycache directories after 3.2); changes to be
able to build on current OSes (e.g. following Mac dev tools location
change, introduction of Debian multiarch, etc.).
Some bugs have been here for so long that everybody depends on them or
work around them, or they would be extremely painful to fix (e.g. in the
option parsing code) for little benefit, so they are wontfix.
Cleanups, refactorings and improvements were banned by the feature freeze.
Regards
Sorry to revive an old-ish discussion--I'm just catching up on things.
But I just wanted to add that distutils is still pretty okay for
building reasonably complex projects. Although it does not rise to
the level of complexity of Numpy or SciPy, the Astropy project
(https://github.com/astropy/astropy) has managed to put together a
pretty nice build system on top of mostly-plain distutils (it does use
distribute but primarily just for 2to3 support).
This has necessitated a number of hacks to overcome shortcomings and
bugs in distutils, but most of those shortcomings could probably be
fixed in distutils within the framework of a slightly lifted freeze.
But in any case I haven't found it worthwhile to switch to something
like bento when the batteries included in the stdlib have been mostly
Good Enough. Having fewer installation dependencies has also made it
significantly easier for non-advanced users to install. Even the
distribute requirement doesn't add too much overhead, as most users
have it on their systems by default now, and for those who don't
distribute_setup.py works okay.
TL;DR, strong -1 on the stdlib "getting out of the build business".
Also as I think Nick already mentioned one of the wins of
Setup-Requires-Dist is to have a standard way to bring in extra build
requirements (such as bento) so if we have better support for a
feature like that it's not necessary to "bless" any preferred tool.
Erik