python-is-python3 package – Everything you need to know

Python is a popular high-level programming language. It’s now being used to build a large part of the internet, randing from large-scale web applications to major part of various operating system. Ubuntu/Debian includes Python as part of their standard packages. But the languages has evolved in such a way that Python 3 does not backward compatible with its Python 2.x sibling, which leads to confusion among Linux beginners. python-is-python3 is a Ubuntu package which aims to be a part of the solution. In this article, we will try to explain the state of Python in Ubuntu and how python-is-python3 packages plays a role in that.

python-is-python3 on Ubuntu

On Ubuntu version 18.10 and older, both Python 2 and Python 3 was shipped with the OS. Python 2 can be called by running python in a terminal, while python3 is the alias for Python 3.

On Ubuntu 20.04 onwards, the developers removed and modified the legacy source code so that Python 2 can be removed. Only Python 3 is shipped with the OS out of the box. Because of that, python command now points to Python 3.

Newer versions of popular software acknowledge this change and update their code accordingly, so that the programs does not accidentally run Python 3 code in Python 2.x, which leads to errors. But a lot of them still expect python to be Python 2.x, renders the program unusable on Ubuntu 20.04 and later.

That’s where python-is-python3 package comes into play. The package simply points python command (and binary path) to Python 3.

Does python-is-python3 really just create a single symlink? You may wonder why introducing a separate package for such a bare bone purpose. The answer is simplicity. Linux distributions are extremely complex systems consist of many simple components that does their own things. The power of package managers comes in their flexibility to do simple things like this in a unified way. For example, a server setup script might have a long list of apt packages that an application needs to be installed, and can simply include python-is-python3 in that list. Having a dedicated package to make a symlink or a set of symlinks is considerably simpler than having a guide explaining how to create and manage the symlink manually.

And if you like the idea of having a dedicated package for making symlinks, there is a package similar to python-is-python3 python-is-python2.

How to use python-is-python3

python-is-python3 provides neither a command-line interface nor GUI, all you need to do is install it onto your system by running the following command:

sudo apt-get install python-is-python3 -y

Once the installation is done, python command will use Python 3.x binary.

python-is-python3 on macOS

First and foremost, python-is-python3 is an Ubuntu-only package, which means there is no python-is-python3 for macOS. But if you’re looking for the proper way to install or set Python 3 as default on Mac, we’ve got a few solutions.

Install Python 3 from installer

There’s a Python 3 installer for macOS that can be downloaded from Python official website. This installer places a new binary named python3 in /usr/local/bin/. If we want python command to call Python 3 instead of Python 2 on macOS, alias the command to the proper binary by running the following command.

echo "alias python=/usr/local/bin/python3.8" >> ~/.zshrc

If you are using the default Bash shell, you can append this same line to your .bashrc:

echo "alias python=/usr/local/bin/python3.8" >> ~/.bashrc

Please note that you won’t be able to automatically update Python if you’re doing things this way.

Install Python 3 with Homebrew

Homebrew is the macOS alternative for apt-get or yum package manager. We’re going to use pyenv – a separate package used to manage multiple Python versions on the same machine. If you’ve got Homebrew installed on your system, run the following command to install pyenv.

brew install pyenv

Then, install Python 3.8.6 by running:

pyenv install 3.8.6

You can replace 3.8.6 with whatever version you want to install.

Alternatively, you can directly install Python with brew by running brew install python, but it’s not recommended since there are significant API changes in different Python 3.x releases, which may lead to error messages in your programs.

Once we’ve got Python3 installed, repeat the configuration steps above with ~/.zshrc and ~/.bashrc.

Fix python-is-python3 command not found

As I mentioned earlier, python-is-python3 provides neither a command-line interface nor a graphical user interface.

If you’re trying to call it by running python-is-python3 in a terminal, you’d be greeted with the python-is-python3 command not found error. There’s simply nothing you can do about that.

We hope that the information above is useful to you. You may be interested in our guide on fixing “pip: command not found” error, “[Errno 32] Broken pipe” in Python and fix “Shadows name from outer scope” in PyCharm.

If you have any suggestions, feel free to comment below and we will add them to the article.

2 thoughts on “python-is-python3 package – Everything you need to know”

  1. Antonio Hamilton

    Great stuff, loved it.

  2. python-is-python3 appears to be available on Debian 11, likely other Linuxes that derive from Debian.


Leave a Comment