Installer Python3 et Pycurl sur CentOS 7

Installer Python3 et Pycurl sur CentOS 7

Salut, aujourd’hui je vous montre comment installer Python3 et Pycurl sur CentOS 7. Une petite procédure qui fait suite à une surprise. Incroyablement, Python 3 n’est toujours pas présent de base dans les repos de CentOS  7. Alors, rien d’insurmontable, il existe 3 méthode d’installation bien expliquées ici, soit au choix :

Ici, je vous remontre l’installation depuis les sources car je ne voulais pas ajouter un repo externe sur le serveur en question, et je ne voulais pas avoir la surcouche SCL pour la suite.

Installer Python 3 depuis l’oeuf les sourcesInstaller Python3 et Pycurl sur CentOS 7

La tout se passe bien, compilation de Python3 depuis les sources  :

curl -O https://www.python.org/ftp/python/3.X.Y/Python-3.X.Y.tgz
yum-builddep python
tar xf Python-3.X.Y.tgz
cd Python-3.X.Y/ 
./configure 
make 
sudo make install

Pour vérifier l’installation :

which python #/usr/bin/python 
which python3 #/usr/local/bin/python3 
python3 --version #Python 3.X.Y 
#Nettoyage 
sudo rm -Rf Python-3.X.Y/ rm Python-3.X.Y.tgz

Il est possible de remplacer l’appel à python pour utiliser la version 3 en ajoutant la ligne suivante dans le ~/.bashrc des utilisateurs :

alias python='/usr/local/bin/python3'

Remarque : il suffit de modifier /etc/bashrc pour modifier la version de python pour faire tous les utilisateurs d’un coup.

Installer Python3 et Pycurl sur CentOS 7 : « je t’aime, moi non plus.. »

Installer Python3 et Pycurl sur CentOS 7Bon pour le coup j’avais besoin du module pycurl dans python3 pour mon script. ET c’est la que j’ai eu une grosse galère.

Après avoir lancé quelques

pip install pycurl 
#
ou pip3 install -with-nss pycurl

J’ai eu droits à :

import pycurl 
ImportError: pycurl: libcurl link-time ssl backend (nss) is different from compile-time ssl    backend (openssl)
# ou
ImportError: pycurl: libcurl link-time ssl backend (nss) is different from compile-time ssl    backend (none/other)

C’est lié à une obscure erreur décrite dans la doc d’installation de Pycurl, mais dont la solution indiqué ne fonctionne pas en l’état sur CentOS 7 (ou en tout cas pas chez moi).

J’ai bien tenté d’installer en téléchargeant depuis Pypi le package ou en ligne de commande avec pip directement, avec différentes options comme –with-nss –compile,  sans succès. D’ailleurs, à un moment j’ai complètement planté l’installation et même yum ne fonctionnait plus :

There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:

pycurl: libcurl link-time ssl backend (nss) is different from compile-time ssl backend (openssl)

Bon, pycurl était bien en vrac, dans mon cas il fonctionnait en python3 mais plus en python2. Je m’en suis sorti en de repartant à zéro depuis un rpm propre :

wget https://www.rpmfind.net//linux/centos/7.2.1511/os/x86_64/Packages/python-pycurl-7.19.0-17.el7.x86_64.rpm
rpm -ivh --replacepkgs python-pycurl-7.19.0-17.el7.x86_64.rpm

Ensuite, en recompilant une version valide depuis pip et en spécifiant la libssl à utiliser avant :

export PYCURL_SSL_LIBRARY=nss
pip install --compile pycurl==7.43.0 # fonctionne à partir de la 7.19.0

et Hop, on a la V7.19.3. en python3 et python 2 et yum remarche.

Conclusion : bougez-vous les fesses chez CentOS/redhat.

Bref, autant vous dire qu’installer Python3 et Pycurl sur CentOS 7 c’est pas gagné d’avance. J’ai galéré un bon moment, et ça m’a surpris que CentOS n’intègre toujours pas Python3 à la sortie d’usine. J’entends par là : Python 3 est sortie fin 2008, je veux bien être compréhensif sur le côté stable d’enterprise linux notamment pour la version 6 de CentOS sortie en 2011.

Mais CentOS 7 est sortie en 2014 : je pense qu’après 6 ans on peut considérer que Python 3 est stable non ? Et sans parler de la 7.2 de fin 2015…

Bref à mettre dans votre liste au père noel 2016.

Installer Python3 et Pycurl sur CentOS 7

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

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