[Python-Dev] Binary CPython distribution for Linux
Gregory Szorc
gregory.szorc at gmail.com
Thu Jun 26 20:34:03 CEST 2014
I'm an advocate of getting users and projects to move to modern Python
versions. I believe dropping support for end-of-lifed Python versions is
important for the health of the Python community. If you've done any
amount of Python 3 porting work, you know things get much harder the
more 2.x legacy versions you need to support.
I led the successful charge to drop support for Python 2.6 and below
from Firefox's build system. I failed to win the argument that Mercurial
should drop 2.4 and 2.5 [1]. A few years ago, I started a similar
conversation with the LLVM project [2]. I wrote a blog post on the
subject [3] that even got Slashdotted [4] (although I don't think that's
the honor it was a decade ago).
While much of the opposition to dropping Python <2.7 stems from the RHEL
community (they still have 2.4 in extended support and 2.7 wasn't in a
release until a few weeks ago), a common objection from the users is "I
can't install a different Python" or "it's too difficult to install a
different Python." The former is a legit complaint - if you are on
shared hosting and don't have root, as easy as it is to add an alternate
package repository that provides 2.7 (or newer), you don't have the
permissions so you can't do it.
This leaves users with attempting a userland install of Python.
Personally, I think installing Python in userland is relatively simple.
Tools like pyenv make this turnkey. Worst case you fall back to
configure + make. But I'm an experienced developer and have a compiler
toolchain and library dependencies on my machine. What about less
experienced users or people that don't have the necessary build
dependencies? And, even if they do manage to find or build a Python
distribution, we all know that there's enough finicky behavior with
things like site-packages default paths to cause many headaches, even
for experienced Python hackers.
I'd like to propose a solution to this problem: a pre-built distribution
of CPython for Linux available via www.python.org in the list of
downloads for a particular release [5]. This distribution could be
downloaded and unarchived into the user's home directory and users could
start running it immediately by setting an environment variable or two,
creating a symlink, or even running a basic installer script. This would
hopefully remove the hurdles of obtaining a (sane) Python distribution
on Linux. This would allow projects to more easily drop end-of-life
Python versions and would speed adoption of modern Python, including
Python 3 (because porting is much easier if you only have to target 2.7).
I understand there may be technical challenges with doing this for some
distributions and with producing a universal binary distribution. I
would settle for a binary distribution that was targeted towards RHEL
users and variant distros, as that is the user population that I
perceive to be the most conservative and responsible for holding modern
Python adoption back.
[1]
http://permalink.gmane.org/gmane.comp.version-control.mercurial.devel/68902
[2] http://lists.cs.uiuc.edu/pipermail/llvmdev/2012-December/056545.html
[3]
http://gregoryszorc.com/blog/2014/01/08/why-do-projects-support-old-python-releases/
[4]
http://developers.slashdot.org/story/14/01/09/1940232/why-do-projects-continue-to-support-old-python-releases
[5] https://www.python.org/download/releases/2.7.7/
More information about the Python-Dev
mailing list