C'est en baillant que la loutre le dit:

Loutre avec écouteurs

Archlinux: s'en sortir avec des dépendances de Python dans tous les sens

mar, 30/08/2016 - 07:42 -- mzw
capture dépendances python

Il y a plusieurs moyens d'installer des dépendances python avec Archlinux et il peut ainsi y avoir des problèmes de conflits, de versions, de base de données pas à jour, etc. Voici des pistes pour s'en sortir !

Ce post explique ma démarche au nettoyage de dépendances python sur Archlinux. Elle ne convient pas forcément à tout le monde, alors gare !

Dans ma quête d'installation de pulseaudio-dlna (permettant d'utiliser une Chromecast comme renderer audio, j'ai eu des petits problèmes de compilation. Ayant fait quelques recherches, j'ai découvert qu'il s'agissait sûrement de dépendances introuvables installées par Pip.

Je me suis dit mais tiens, pourquoi ai-je des paquets installés avec Pip ? J'ai rien demandé. Ça vient sûrement du fait que je connais pas du tout le monde de Python et que j'ai du copier-coller des commandes un peu au hasard.

Tout ça pour dire que généralement, il vaut mieux passer par le Package manager du système au lieu d'utiliser une application tierce, bien qu'elle soit utile. Sur Archlinux, grâce au dépôt AUR, il y a la grande majorité des paquets python, Pip n'est pratiquement pas requis pour mon utilisation.

J'ai donc décidé de supprimer tous les paquets qui ont été installés par Pip. La commande pip freeze va nous aider à faire ça (source). Avec un peu de bashing, on obtient la commande permettant de les déinstaller d'un coup:

$ pip freeze | sed 's/\=/\:/g' | cut -d: -f1 | xargs sudo pip uninstall -y 

Attention, cela désinstalle uniquement les paquets python3, il faut donc également faire:

$ pip2.7 freeze | sed 's/\=/\:/g' | cut -d: -f1 | xargs sudo pip2.7 uninstall -y 

Bon. faire cela a cassé certains de mes programmes, parce que certaines librairies étaient évidemment requises:

ImportError: The 'packaging.requirements' package is required; normally this is bundled with this package so if you get this warning, consult the packager of your distribution.

Ce qui est "marrant", c'est qu'ils sont jugés comme installés par le système de paquets Archlinux. En utilisant pacman -Qd on peut voir ce qui est installé:

$ pacman -Qd | grep python

Il s'agit donc de tout réinstaller ? On va pas s'embêter:

yaourt -Qqd | grep python | xargs yaourt -S --noconfirm

Tu remarqueras que j'ai remplacé pacman par yaourt, ce qui permet d'avoir également les paquets dans AUR.

Suite à ça, j'ai pu installer pulseaudio-dlna sans aucun problème.