I'm a recent Arch user, a refugee from Ubuntu. I was attracted to
Arch because I was tired of Ubuntu forcing their new software on me --
it seemed the Arch way was to allow you to use bleeding edge if you
wanted it, but to not fork upstream.
So it was with some surprise that I discovered that Arch made
/usr/bin/python point to something other than Python 2. This differs
from every other system (not only other Linuxes, but also [as I
learned from bug reports I received] OS X and even python.exe on
I appreciate that y'all want to use the bleeding edge, and it
completely consistent with my understanding of Arch that you would
only provide Python 3 by default as well as write your system scripts
use Python 3. (I write this mail with some trepidation as I fear a
response like "STFU noob Arch is bleeding edge", which is
emphatically not a response to the issue I'm actually raising.)
What I don't understand is why you're manually patching upstream
software to rewrite references from /usr/bin/python to
/usr/bin/python2. This sort of forking is exactly the sort of
divergence (like how Ubuntu modified their GTK to add their own
specific hooks) that I was fleeing from when I came to Arch.
You can see in the references below that it appears this is
contrary to how upstream thinks it should work.
It means that I can't download any random project (such as Chromium)
and build it without first applying Arch-specific patches. And
upstreams like Chromium can't change to support Arch's divergence
without breaking their code on non-Arch systems.
As a software developer, I am now getting contacted by users where my
software doesn't work on Arch. I even applied a patch submitted by an
Arch user to make my code use "python2" only to discover it broke my
software on Mac and Windows.
So my questions for you are
1) Is it intentional that I am unable to use software from upstream
like Django unmodified? Am I expected to only install software
from the Arch repositories, where it has been patched by Arch devs
to work on Arch? (See below for more on Django.)
2) Should I change the software I write to attempt to detect when I'm
on an Arch system and adjust scripts/etc. accordingly? (I can't just
"fix it" because there is no /usr/bin/python2 on existing systems like
Both of those seem pretty unsatisfactory. Help!
Here are some additional references, if they help you any.
- Upstream Python dev believes that code that uses /usr/bin/python
when it wanted Python 3 is wrong:
- According to Google's Code search, there are likely around 80,000
existing Python scripts that are broken by this change.
(Note that searching for /usr/bin/python[^23] doesn't work,
you have to search for /usr/bin/python then subtract out the ones
ending in 2 or 3:
- As a random example, here's a script from the Django project (which
I chose for this mail as an example of a high-profile Python
program) that uses 'python' when it means Python 2:
Here's their statement on Python 3:
And here's the PKGBUILD, which patches around this:
- Here's a project of mine where on AUR they've attempted to patch
around the python/python2 thing in the PKGBUILD:
However, the patch is not sufficient, which lead to another bug report.
- A Python developer discusses how Python3 is very different from Python2,
making it very difficult as a developer to support both: