Compiler et installer Python 3 depuis les sources sous Linux

Compiler et installer Python 3 depuis les sources sous Linux

Il est parfois nécessaire de compiler et installer Python 3 directement depuis les sources, notamment si nous voulons utiliser la dernière version disponible et que celle-ci n’est pas disponible dans les packages officiels de notre distribution.

Dans cet article nous verrons comment compiler et installer Python 3 depuis les sources sous Linux pour la plupart des distributions actuelles.

Avant de commencer

Dans le cadre de cet article, nous nous focaliserons sur Python 3.12 qui est disponible en version stable de puis le 2 octobre mais n’est pas encore installable via les dépôts de package de la majorité des distributions.

Etant donné que nous allons compiler et installer Python depuis les sources, nous allons devoir installer une série d’outils et de librairies nécessaires à la compilation. C’est d’ailleurs la seule partie qui diffère selon les distributions.

Globalement nous pouvons découper la procédure en quelques étapes:

  • Installer les outils et librairies nécessaires à la compilation
  • Télécharger les sources et extraire les sources
  • Configurer et préparer les sources
  • Compiler les sources
  • Installer les fichiers compilés
  • Tester l’installation

Installer les outils et librairies nécessaires à la compilation

Cette étape variera en fonction de notre distribution. Une connaissance de base des gestionnaires de package comme apt, dnf ou encore pacman nous sera utile ici.

Ubuntu, Debian et leurs dérivés…

Bash
sudo apt install build-essential gdb lcov pkg-config libbz2-dev \
                 libffi-dev libgdbm-dev libgdbm-compat-dev \
                 liblzma-dev libncurses5-dev libreadline6-dev \
                 libsqlite3-dev libssl-dev lzma lzma-dev tk-dev \
                 uuid-dev zlib1g-dev wget

ArchLinux

Bash
sudo pacman -S base-devel wget

Red Hat, RockyLinux, Fedora, CentOS, …

Bash
sudo dnf groupinstall "Development Tools"
sudo dnf install zlib-devel bzip2 bzip2-devel readline-devel \
                 sqlite sqlite-devel openssl-devel xz xz-devel \
                 libffi-devel findutils ncurses-devel wget

Télécharger et extraire les sources

Une fois les outils et librairies nécessaires installés, nous pouvons nous occuper du téléchargement des sources de Python et de l’extraction de celles-ci.

Pour cet article, nous créerons un dossier ~/sources dans lequel nous téléchargerons le fichier des sources et dans lequel nous allons ensuite l’extraire.

Nous pouvons télécharger les sources directement depuis le site officiel de Python https://www.python.org/ftp/python/. Nous y trouvons un dossier par version de python. Ici nous allons installer Python 3.12.

Création du dossier pour le téléchargement et la compilation

Bash
mkdir -p ~/sources

Téléchargement des sources

Bash
cd ~/sources
wget https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tgz

Une fois le téléchargement terminé, nous pouvons extraire les sources.

Extraction des sources

Nous sommes donc toujours dans le dossier ~/sources.

Bash
tar xvf Python-3.12.0.tgz

Une fois l’extraction terminée, un nouveau dossier ~/sources/Python-3.12 est créé et contient toutes les sources de Python.

Compiler et installer Python

Préparation et configuration des sources

Nous devons maintenant configurer les sources avant de lancer la compilation.

Bash
cd Python-3.12.0
./configure --enable-optimizations --with-ensurepip=install

configure est l’outil de configuration et de préparation de sources. Nous lui passons ici deux options:

  • --enable-optimizations : produit un environnement Python plus efficace, mais la compilation sera plus longue.
  • --with-ensurepip=install : installe pip (un gestinnaire de packages python) et le nomme en fonction de la version.

Cette étape peut prendre quelques minutes. Si elle se termine par une erreur, il est fort probable que certaines librairies nécessaires à la compilation sont manquantes. Dans ce cas, retournez à la première étape, l’installation des outils et librairies nécessaires à la compilation.

Si la configuration s’est bien passée, nous pouvons maintenant compiler les sources.

Compiler les sources de Python

Bash
make

Pour gagner du temps vous pouvez aussi exécuter la compilation sur plusieurs processus en parallèle, pour ça vous pouvez indiquer le nombre de processus avec l’option -n. Ce qui donne…

Bash
make -j n

Remplacez ici n par le nombre de processus que vous voulez utiliser en parallèle pendant la compilation. vous pouvez globalement donner un nombre allant jusqu’au nombre de coeurs de processeur dont vous disposez sur votre machine.

La compilation prendra de quelques minutes jusqu’à quelques dizaines de minutes selon les performances de votre machine.

Une fois la compilation terminée, nous allons pouvoir passer à l’installation de Python.

Installer Python

Cette étape requiert des droits privilégies et doit donc être exécutée par root ou via la commande sudo.

Nous allons ici effectuer une installation de type altinstall, ce qui signifie que Python sera installé en utilisant son nom de version. Par exemple l’interpréteur sera python3.12, la plupart des fichiers seront placés dans /usr//local/lib/python3.12. L’avantage de ce choix est que cela n’écrase pas la version de Python 3 déjà installée sur le système.

Bash
sudo make altinstall

Cette étape prendra de nouveau quelques minutes. Un fois terminée, nous avons Python 3.12 installé et fonctionnel.

Tester Python

Nous pouvons maintenant tester notre installation de Python 3.12.

Afficher la version de python

Bash
python3.12 --version
steve@just-sudo-it python3.12 → python3.12 --version
Python 3.12.0
steve@just-sudo-it  python3.12 →

Lancer l’interpréteur Python

Bash
python3.12
steve@just-sudo-it ~ → python3.12
Python 3.12.0 (main, Oct  5 2023, 08:44:42) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 
steve@just-sudo-it ~ →

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.