Aujourd'hui, je vais vous expliquer comment installer les versions Python 2.7 et 3.5 sur CentOS 6.4. Et nous allons le faire sans casser l'installation Python existante (la version installée par défaut du système est 2.6.6 sur CentOS 6.4) et d'autres outils système tels que yum . Eh bien, la raison principale derrière ce tutoriel est - j'ai récemment installé Python 3 et tout cassé - python, pip, yum etc... Voici l'instantané de ceux-ci : yum cassé après l'installation/la mise à jour de Python :
# yum There was a problem importing one of the Python modules required to run yum. The error leading to this problem was: No module named rpm Please install a package which provides this module, or verify that the module is installed correctly.
Python n'a pas réussi à importer yum après l'installation/la mise à jour de Python :
# python Python 2.6 (r26:66714, Dec 16 2015, 11:33:08) [GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import yum Traceback (most recent call last): File "", line 1, in ImportError: No module named yum >>>
et pip cassé aussi :
# pip Traceback (most recent call last): File "/usr/bin/pip", line 5, in from pkg_resources import load_entry_point ImportError: No module named pkg_resources
Donc, la leçon apprise est - Ne gâchez jamais Python !! (Une fois que le Python est cassé, il est très difficile à réparer). Cela signifie que si jamais vous souhaitez installer plusieurs versions de Python sur une seule machine, faites-le de la bonne manière !
Remarque :installez toujours la nouvelle version de Python dans un emplacement non standard (tel que /usr/local/)
Prerequisites: You need root access or sudo privilege.
Préparez le système à configurer Python en installant les "outils de développement" et les bibliothèques nécessaires.
Installer les outils de développement :
#yum groupinstall "Development tools" ::::::::::::::::::::::::: ::::::::::::::::::::::::: rpm-libs.x86_64 0:4.8.0-47.el6 rpm-python.x86_64 0:4.8.0-47.el6 xz-libs.x86_64 0:4.999.9-0.5.beta.20091007git.el6 Complete!
Vous pouvez également avoir besoin de ces bibliothèques :
Ces bibliothèques ne sont pas indispensables pour installer Python, mais vous en aurez peut-être besoin ultérieurement.
#yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel ::::::::::::::::::::::::::: ::::::::::::::::::::::::::: ncurses-libs.x86_64 0:5.7-4.20090207.el6 openssl.x86_64 0:1.0.1e-42.el6_7.2 sqlite.x86_64 0:3.6.20-1.el6_7.2 Complete!
Compiler et installer Python 2.7 sur CentOS 6.4
Téléchargez Python 2.7 :
# wget http://python.org/ftp/python/2.7.6/Python-2.7.6.tar.xz
# tar xf Python-2.7.6.tar.xz
Remarque : La dernière version de tar est capable d'extraire .xz dossier. Au cas où, si vous ne pouviez pas extraire en utilisant tar , alors voici un guide pour vous aider.
# cd Python-2.7.6
#./configure --prefix=/usr/local --enable-unicode=ucs4 --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib" ::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::: configure: creating ./config.status config.status: creating Makefile.pre config.status: creating Modules/Setup.config config.status: creating Misc/python.pc config.status: creating Modules/ld_so_aix config.status: creating pyconfig.h creating Modules/Setup creating Modules/Setup.local creating Makefile
Remarque : Je vais installer Python dans /usr/local . Cela signifie que l'exécutable sera installé dans /usr/local/bin et les bibliothèques dans /usr/local/lib . Attention aux LDFLAGS aussi.
# make && make altinstall :::::::::::::::::::::::::::::: running install_scripts copying build/scripts-2.7/idle -> /usr/local/bin copying build/scripts-2.7/smtpd.py -> /usr/local/bin copying build/scripts-2.7/pydoc -> /usr/local/bin copying build/scripts-2.7/2to3 -> /usr/local/bin changing mode of /usr/local/bin/idle to 755 changing mode of /usr/local/bin/smtpd.py to 755 changing mode of /usr/local/bin/pydoc to 755 changing mode of /usr/local/bin/2to3 to 755 running install_egg_info Writing /usr/local/lib/python2.7/lib-dynload/Python-2.7.6-py2.7.egg-info rm /usr/local/lib/python2.7/lib-dynload/_sysconfigdata.py*
Remarque : Recherchez make altinstall - vous ne devez jamais utiliser "make install" car il installera les deux versions sur le même système de fichiers et gâchera python.
Le Python 2.7 est installé sous :
# ls -ld /usr/local/lib/python2.7/
Compiler et installer Python 3.5 sur CentOS
# wget https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tar.xz
# tar xz Python-3.5.1.tar.xz
# cd Python-3.5.1
# ./configure --prefix=/usr/local --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib" ::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::: configure: creating ./config.status config.status: creating Makefile.pre config.status: creating Modules/Setup.config config.status: creating Misc/python.pc config.status: creating Misc/python-config.sh config.status: creating Modules/ld_so_aix config.status: creating pyconfig.h creating Modules/Setup creating Modules/Setup.local creating Makefile
# make && make altinstall :::::::::::::::::::::::: :::::::::::::::::::::::: Ignoring indexes: https://pypi.python.org/simple Collecting setuptools Collecting pip Installing collected packages: setuptools, pip Successfully installed pip-7.1.2 setuptools-18.2
Python 3.5 installed: # ls -ld /usr/local/lib/python3.5/
Installer Setuptools et Python Pip :
Installons maintenant setuptools et pip pour les deux versions de Python (2.7 et 3.5) que nous avons installées ci-dessus :
# wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py (or)
# curl https://raw.githubusercontent.com/pypa/pip/master/contrib/get-pip.py | /usr/local/bin/python2.7You're using an outdated location for the get-pip.py script, please use the one available from https://bootstrap.pypa.io/get-pip.py
Mise à jour : La commande ci-dessus échouera avec une erreur introuvable. Utilisez plutôt la commande ci-dessous pour installer pip2.7.
#curl https://bootstrap.pypa.io/get-pip.py | /usr/local/bin/python2.7
Installez les outils de configuration pour Python 2.7 :
# python2.7 ez_setup.py
Installez les outils de configuration pour Python 3.5 :
# python3.5 ez_setup.py ::::::::::::::::::::::::: Installed /usr/local/lib/python3.5/site-packages/setuptools-19.4-py3.5.egg Processing dependencies for setuptools==19.4 Finished processing dependencies for setuptools==19.4
Installation de pip pour Python 2.7 :
# easy_install-2.7 pip :::::::::::::::::::::: Installing pip script to /usr/local/bin Installing pip2.7 script to /usr/local/bin Installing pip2 script to /usr/local/bin Installed /usr/local/lib/python2.7/site-packages/pip-8.0.0-py2.7.egg Processing dependencies for pip Finished processing dependencies for pip
Installation de pip pour Python 3.5 :
# easy_install-3.5 pip Searching for pip Best match: pip 7.1.2 Adding pip 7.1.2 to easy-install.pth file Installing pip3.4 script to /usr/local/bin Installing pip3 script to /usr/local/bin Installing pip script to /usr/local/bin Using /usr/local/lib/python3.5/site-packages Processing dependencies for pip Finished processing dependencies for pip
Nous avons donc deux versions de Python, pip et setuptools. Nous allons maintenant isoler ces environnements Python (2.7 et 3.5).
Comment configurer des environnements Python isolés
Pour ce faire, nous avons besoin d'un package appelé virtualenv.
Installez virtualenv pour Python 2.7 :
#pip2.7 install virtualenv ::::::::::::::::::::::::::: Installing collected packages: virtualenv Successfully installed virtualenv-14.0.0
Une fois installé, recherchez virtualenv commandes comme indiqué ci-dessous :
# virtualenv<tab> virtualenv virtualenv-3.5
Créons maintenant un environnement isolé en utilisant virtualenv pour Python 2.7 et je nommerai cet environnement virtuel py27env (vous pouvez définir un nom différent).
# virtualenv py27env New python executable in /root/py27env/bin/python2.7 Also creating executable in /root/py27env/bin/python Installing setuptools, pip, wheel...done.
L'environnement isolé (appelé bac à sable) sera créé dans le répertoire actuel où vous avez exécuté la commande ci-dessus. Cherchez le dossier nommé py27env (peut-être un nom différent dans votre cas).
# ls -ld py27env/ drwxr-xr-x. 5 root root 4096 Jan 21 15:25 py27env/
Vous devez activer le sandbox py27env :
# source py27env/bin/activate (py27env)
Maintenant, vérifiez la version de python comme indiqué ci-dessous :
# python --version Python 2.7.6
La sortie ci-dessus montre que vous êtes dans le bac à sable Python 2.7.6. Pour revenir à la version Python installée sur le système, il vous suffit de la désactiver comme ci-dessous :
(py27env)# deactivate
Vérifiez la version maintenant :
# python --version Python 2.6.6 //You are now back to default Python environment.
Créer un environnement sandbox pour Python 3.5
Nous avons utilisé virtualenv pour créer un bac à sable pour Python 2.5, mais pour Python 3.5, nous utiliserons la commande intégrée appelée pyvenv-3.5.
# pyvenv-3.5 py35environment (py35environment)
Vous trouverez un répertoire nommé "py35environment" dans le répertoire actuel. Activons maintenant l'environnement Python 3.5 comme indiqué ci-dessous :
# source py35environment/bin/activate (py35environment)
(py35environment) # python --version Python 3.5.1
Désactivez-le comme ci-dessous :
(py35environment) # deactivate
# python --version Python 2.6.6
C'est ça! Vous avez maintenant deux environnements Python différents et vous l'avez fait sans rien gâcher. J'espère que ce tutoriel vous a aidé.