[IPython-dev] [sympy] Treating Python 3 as a first-class citizen

Ondřej Čertík ondrej.certik at gmail.com
Tue Aug 6 00:05:17 EDT 2013

On Mon, Aug 5, 2013 at 9:24 PM, Aaron Meurer <asmeurer at gmail.com> wrote:
> On Mon, Aug 5, 2013 at 1:40 PM, Thomas Kluyver <takowl at gmail.com> wrote:
>> On 5 August 2013 19:32, Ondřej Čertík <ondrej.certik at gmail.com> wrote:
>>> Though the PEP above says that eventually "python" should point to python
>>> 3.
>> Debian developers are strongly against ever making that change. It's
>> possible that they'll change their minds in a few years, but I wouldn't bank
>> on it.
> They will change their minds. I thought that Arch was stupid making
> "python" point to Python 3, but that was because at the time, no
> libraries were Python 3 compatible. Nowadays, all major libraries are
> compatible. In the future, Python 2 will be defunct, and it will be
> stupid to never call Python "python".

I think so too.

>>> What is confusing to me is what is fundamentally different in Python 3.2,
>>> as opposed to Python 2.5 or 2.6, when you have a single code base.
>>> E.g. we do not bother with creating ipython2.5 and ipython2.6, so that
>>> they
>>> can be run side by side, and people simply use virtualenv to run them
>>> side by side.
>>> So why cannot the same approach be used for Python 3.2?
>> Many more systems have a 2.x and a 3.x installed together, and many more
>> users will want to run a 2.x and a 3.x version in parallel than wanted to
>> run, say, 2.5 once 2.6 was available. I think the Debian approach of
>> treating Python 2 and 3 as two separate, albeit similar, platforms works
>> nicely.
>> (In fact I think IPython used to make versioned entry points like
>> ipython2.6, but that's not important).
>> Thomas
> Once you switch to a single codebase, you start to see things
> differently. Python 3 is just another version of Python. Supporting
> Python 2.6 - 3.3 is no different than supporting Python 2.4 - 2.7.
> The Python community made a big fuss about it, but I think that was a
> mistake, and it has kept people from transitioning.

Exactly. I recently wrote this blog post:


and I got a lot of feedback --- and unless I missed any, everybody
agreed that "of course, single code base is the way to go" and "of
course, Python 3.x is just another version of Python, with single code
base there is no difference in supporting 2.6-2.7 or 2.6-3.3", as
Aaron said.

This was a big surprise to me, that so many people see it this way,
because the core devs, so far, have not "blessed" this approach (in
fact they were discouraging this approach in the past).

As far as Debian goes --- they made the decision to do python3 and
python2 long time ago, when Guido very clearly said (see my blog post
for reference), that Python 3 will be a new language. So creating
python3 was the only logical conclusion. But now when it is clear,
that with single code base Python 3 is not a new language, it really
make sense to have just one "python" and point to whatever default
version, be it 2.7 or 3.2 or whatever.

Fernando, I would be very much interested what you think of this
issue, as you have more touch with the Python core devs.


More information about the IPython-dev mailing list