Hacker News new | ask | show | jobs
by II2II 1683 days ago
The main example I can think of is when you don't know what python links to. For example, an Arch system will links to some version of Python 3. I believe that Debian based systems link to some version of Python 2. You could just swap python with python3, but if your script supports Python 2 as well and you're trying to run it on a system without Python 3, it will fail.

Of course, if your script will run under both Python 2 and 3, I don't know why you would want to use these contrivances to simply give preference to Python 3.

3 comments

>Ever had a script that's compatible with both, Python 2 and 3...

The article is literally about this scenario, which is why I'm also confused. Yes, `/usr/bin/env python` is a bad idea IF your script depends on a certain version, but that's exactly what the author doesn't need!

> I believe that Debian based systems link to some version of Python 2.

Since Debian 11 and Ubuntu 20.04 LTS it's a matter of installing the matching package:

python-is-python2 [1] for having /usr/bin/python link to Python 2.7, python-is-python3 [2] for having /usr/bin/python link to Python 3.x or none of them to avoid having /usr/bin/python at all. The latter one will still result in a working system, as all Python scripts shipped by Debian/Ubuntu nowadays explicitly specify /usr/bin/python2 or /usr/bin/python3.

[1]: https://packages.debian.org/bullseye/python-is-python2

[2]: https://packages.debian.org/bullseye/python-is-python3

Oh god. No, not having a `/usr/bin/python` will not result in a working system. Does Debian really think they're the only software distributor that their users use?
No, which is why the “python-is-python2” and “python-is-python3” packages exist.
Great! Except that apparently, you can have neither of those packages installed.
> I don't know why you would want to use these contrivances to simply give preference to Python 3.

Performance gains, preferring future-looking development, and better error messages.