Benjamin sent me this message separately(*) privately and I responded
privately.  Here is my response.

(*) or his mailer did

On Sun, 22 Jul 2012 20:22:50 +0100, Oscar Benjamin
<oscar.benja...@bristol.ac.uk> wrote:
> On 22 July 2012 14:08, R. David Murray <rdmur...@bitdance.com> wrote:
>
> > On Sun, 22 Jul 2012 11:21:38 +0300, anatoly techtonik <techto...@gmail.com>
> > wrote:
> > > http://docs.python.org/py3k/howto/pyporting.html#during-installation
> > >
> > > What's the point in making implicit Python 3 check here:
> > > try:  # Python 3
> > >   from distutils.command.build_py import build_py_2to3 as build_py
> > > except ImportError:  # Python 2
> > >   from distutils.command.build_py import build_py
> > >
> > > instead of explicit check like:
> > > import sys
> > > if sys.version_info[0] >= 3:
> > >     from distutils.command.build_py import build_py_2to3 as build_py
> >
> > It's called testing for the thing that actually matters, rather than
> > testing a constant with a much broader meaning.  Yes, in this case the
> > results are the same, but IMO it is better programming practice to test
> > the thing that actually matters when you can.
>
>
> I recently changed a setup.py from try/ImportError to an explicit
> sys.version_info check. I'm not totally sure how to reproduce this but I
> had a problem where I was installing into a 2.x virtualenv and it was
> running 2to3 during install and subsequently failing to import the 3.x code
> (the problem didn't occur when using the same python that generated the
> virtualenv).
>
> I may be wrong but I imagined that sometimes build_py_2to3 is importable on
> 2.x, perhaps for cross-building or something. In any case 'testing the
> thing that matters' means testing what version of Python you are about to
> install into not whether the python version supports running 2to3.

I'm not familiar with distutils, really, so you could be right about
what it is important to test.  I was commenting based on the code
snippet presented, which just deciding which "build" object to use.
If build_py_2to3 can be imported by python2 and subsequently screws up
the build, then yes the logic is incorrect.  But I have to defer to the
packaging people on that.  (I wish I had time to help with packaging
because it is important, but it doesn't seem like a sensible place for
me personally to spend my currently available time.)

--David
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to