accueil   blog   bin   contact

Les versions python et les dépendances de chaque script

Ayant cédé aux sirènes du scripting et sachant parler python, j'ai construit un certain nombre de scripts python par le passé... avant l'âge glorieux des LLM. En raison de mon activité professionnelle, ces scripts doivent pour la plupart échanger des données avec des fichiers ods ou xlsx, ce qui ajoute un certain nombre de contraintes. En effet, une distribution python basique ne permet pas de lire ou écrire dans de tels fichiers. Par souci de cohérence, ou plutôt en raison de découvertes successives, aucun de ces scripts n'utilise la même bibliothèque pour cette tâche pourtant essentielle.

Et pyexcel qui n'est plus maintenue

Une de ces bibliothèques, pyexcel, n'est plus maintenue depuis des années et ne peut pas être utilisée avec les dernières versions de python. La dernière version dans laquelle cette bibliothèque est fonctionnelle est python 3.8, initialement publiée en 2019 et plus maintenue depuis 2024. Aujourd'hui, trois possibilités sont envisageables :

La troisième voie

La première voie n'étant pas retenue en raison de l'effort à fournir, la deuxième étant inenvisageable, la troisième doit être explorée. Outre les propositions originales comme celle proposant d'exécuter ce script au sein d'un containeur Docker, une option reste envisageable : installer plusieurs versions de python sur un même système.

La solution choisie nécessite l'installation du paquet pyenv :

sudo pacman -S pyenv

qui permet ensuite d'installer la version désirée de python :

pyenv install 3.8

Suite à cela, le fichier .bashrc est modifié pour rendre les nouvelles versions de python accessibles dans le $PATH :

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

Dernière action, pour que script puisse être exécuté avec la bonne version de python, il faut rendre la version 3.8 de python accessible partout, pour tout script dans tout répertoire :

pyenv global system 3.8

Ainsi, le système possède deux versions de python qui cohabitent, la version principale du système est toujours gérée par pacman.

Installer ces bibliothèques problématiques

Pour installer pyexcel, il est possible d'utiliser pip en prenant garde à bien l'exécuter avec python 3.8 :

python3.8 -m pip install pyexcel pyexcel-xlsx