GNU/Linux >> Tutoriels Linux >  >> Linux

Comment installer plusieurs versions de Python (2.7 et 3.5) sans casser les outils système et créer un environnement isolé à l'aide de Virtualenv ?

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.7
You'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é.


Linux
  1. Pare-feu Raspberry Pi :comment l'installer et le gérer à l'aide d'UFW

  2. Créer un environnement virtuel pour différentes versions de Python à l'aide de Conda

  3. Comment installer et changer de version de Python sur Ubuntu 20.04

  4. Comment utiliser plusieurs versions de Node.js à l'aide de NVM

  5. Comment créer et interroger un système de fichiers BTRFS

VMware :comment créer une machine virtuelle et installer un système d'exploitation invité à l'aide de vSphere Client

Comment installer et utiliser YouTube-DL sur le système Linux

Comment installer et configurer AnyDesk sur le système Linux

Comment installer et configurer Django sur le système Linux

Comment installer et configurer PrestaShop sur le système Linux

Comment installer et configurer Elasticsearch sur le système Linux