This tutorial shows how to install and setup the Python programming language 3.10 in Debian 11 bullseye.
Python 3.10 is the latest LTS version of the interpreted high-level general-purpose programming language released a few days ago. It features pattern matching, writing union types as X | Y, OpenSSL 1.1.1, and more. And it has 18-month support with bug-fix updates, and 5-year support with security updates.
Unlike Fedora and Ubuntu, there’s neither official package nor PPA repository that contains Python 3.10 package for Debian users. However, compiling Python from source is easy and here’s how!
UPDATE: This tutorial is also tested and works with Python 3.11. Though, you have to change the version number in the following commands.
Build Python 3.10 in Debian 11:
Firstly, open terminal from start menu or connect to Debian Server command console. Next run following commands one by one to build Python 3.10 either in Debian 11 Desktop and/or Server.
1. Install Dependencies:
In terminal or command console, first update system package by running command:
sudo apt update
Next install essential packages for downloading the source and building the program:
sudo apt install wget build-essential libreadline-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev
2. Download Python 3.10 / 3.11:
Then download the source tarball either by running the wget command:
wget -c https://www.python.org/ftp/python/3.10.11/Python-3.10.11.tar.xz
NOTE: Python 3.10 is keep updating with point releases! At the moment of writing, the latest is 3.10.11. But newer versions may be out when you see this tutorial! So, go check this download page and replace 3.10.11 in command with the latest or your desired version number!
For Python 3.11, use the command below instead to download the tarball (also replace point version number accordingly).
wget -c https://www.python.org/ftp/python/3.11.3/Python-3.11.3.tar.xz
After that, extract the source tarball either via file manager or using command (change release number 3.10.11 accordingly):
tar -Jxvf Python-3.10.11.tar.xz
3. Build Python 3.10:
After downloading and extracting the source tarball, navigate to the generated source folder via cd command (also replace 3.10.11 to yours version number):
cd Python-3.10.11
And configure with expensive, stable optimizations (PGO, etc.):
./configure --enable-optimizations
Finally, build and install Python 3.10 into /usr/local/bin directory without overriding the system built-in Python installation:
sudo make -j4 && sudo make altinstall
Depends on your CPU, change -j4
(4 threads) in command to tell start how many threads for the building process.
4. Verify Python 3.10 installation:
After installation, verify it via command:
python3.10 --version
pip3.10 --version
For Python 3.11, run python3.11 --version and
pip3.11 --version
instead.
Set Python 3.10 as default in Debian 11:
Debian 11 by default uses python 3.9 as default for python3 executable and leave ‘python’ un-configured. Users may link Python3.10 to python easily via update-alternatives command:
1.) Set Python3.10 as python via command:
sudo update-alternatives --install /usr/bin/python python /usr/local/bin/python3.10 1
2.) For pip, it’s recommended to use python3.10 -m pip install
command. If you insists, run command below to set it as default.
sudo update-alternatives --install /usr/bin/pip pip /usr/local/bin/pip3.10 1
After that, run python --version
and pip --version
to check results.
Conclusion:
As you see, it’s quite easy to compile Python 3.10/3.11 from source tarball. Just install dependencies, download source and build it. And it installs in a few minutes in my case with no error occurred. As well, users may set Python 3.10 and Pip 3.10 as default easily by creating symbolic links using update-alternatives command.
after
$ sudo update-alternatives –install /usr/bin/pip pip /usr/local/bin/pip3.10 1
update-alternatives: using /usr/local/bin/pip3.10 to provide /usr/bin/pip (pip) in auto mode
update-alternatives: warning: not replacing /usr/bin/pip with a link
and repeatedly
$ sudo update-alternatives –install /usr/bin/pip pip /usr/local/bin/pip3.10 1
update-alternatives: warning: forcing reinstallation of alternative /usr/local/bin/pip3.10 because link group pip is broken
update-alternatives: warning: not replacing /usr/bin/pip with a link
I get 3.9
$ pip –version
pip 20.3.4 from /usr/lib/python3/dist-packages/pip (python 3.9)
—
I am just copy-pasting this and no idea what to do.. any advice please? ty
I have run
$ yes ” | sudo update-alternatives –force –all
to solve this
Just checked the “
python3-pip
” package that provides the pip installer for system built-in Python. It creates 3 executable files:The 3 executable file are totally same. You can remove /usr/bin/pip via
sudo rm /usr/bin/pip
or use the command you provided. However, IMO usepython3.10 -m pip install PACKAGE_NAME
instead could be a better choice.BTW, for Ubuntu 23.04 you need to use pip with virtual environment.