GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo instalar múltiples versiones de Python (2.7 y 3.5) sin romper las herramientas del sistema y crear un entorno aislado usando Virtualenv?

Hoy les contaré cómo instalar las versiones de Python 2.7 y 3.5 en CentOS 6.4. Y vamos a hacer esto sin romper la instalación existente de Python (la versión instalada por defecto del sistema es 2.6.6 en CentOS 6.4) y otras herramientas del sistema como yum . Bueno, la razón principal detrás de este tutorial es:recientemente instalé Python 3 y rompí todo:python, pip, yum, etc. Aquí está la instantánea de estos: yum se rompió después de instalar/actualizar 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 no pudo importar yum después de instalar/actualizar 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
 >>>

y pipa también se rompió:

# 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

Entonces, la lección aprendida es:¡Nunca te metas con Python! (Una vez que Python está roto, es muy difícil de arreglar). Significa que, si alguna vez desea instalar varias versiones de Python en una sola máquina, ¡hágalo de la manera correcta!

Nota:Instale siempre la nueva versión de Python en una ubicación no estándar (como /usr/local/)

Prerequisites: You need root access or sudo privilege.

Prepare el sistema para configurar Python instalando "Herramientas de desarrollo" y las bibliotecas necesarias.

Instalar herramientas de desarrollo:

#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!

También puede necesitar estas bibliotecas:

Estas bibliotecas no son obligatorias para instalar Python, pero es posible que las necesite en una etapa posterior.

#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!

Compila e instala Python 2.7 en CentOS 6.4

Descarga 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

Nota: La última versión de tar es capaz de extraer .xz expediente. En caso de que no pudieras extraer usando tar , aquí tienes una guía para ayudarte.

# 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

Nota: Instalaré Python en /usr/local . Significa que el ejecutable se instalará en /usr/local/bin y bibliotecas en /usr/local/lib . Esté atento a las LDFLAGS también.

# 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*

Nota: Busque make altinstall – nunca debe usar 'make install' ya que instalará ambas versiones en el mismo sistema de archivos y estropeará python.

Python 2.7 está instalado en:

# ls -ld /usr/local/lib/python2.7/

Compila e instala Python 3.5 en 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/

Instalar herramientas de configuración y Python Pip:

Ahora instalemos setuptools y pipa para las dos versiones de Python (2.7 y 3.5) que instalamos anteriormente:

# 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

Actualización: El comando anterior fallará con el error no encontrado. En su lugar, use el siguiente comando para instalar pip2.7.

#curl https://bootstrap.pypa.io/get-pip.py | /usr/local/bin/python2.7

Instalar herramientas de configuración para Python 2.7:

# python2.7 ez_setup.py

Instalar herramientas de configuración para 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

Instalación de pip para 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

Instalación de pip para 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

Entonces tenemos dos versiones de Python, pip y setuptools. Ahora aislaremos esos entornos de Python (2.7 y 3.5).

Cómo configurar entornos Python aislados

Para hacer eso, necesitamos un paquete llamado virtualenv.

Instalar virtualenv para Python 2.7:

#pip2.7 install virtualenv
:::::::::::::::::::::::::::
Installing collected packages: virtualenv
Successfully installed virtualenv-14.0.0

Una vez instalado, busque virtualenv comandos como se muestra a continuación:

# virtualenv<tab>
virtualenv virtualenv-3.5

Ahora vamos a crear un entorno aislado usando virtualenv para Python 2.7 y nombraré ese entorno virtual como py27env (puede establecer un nombre diferente).

# virtualenv py27env
New python executable in /root/py27env/bin/python2.7
Also creating executable in /root/py27env/bin/python
Installing setuptools, pip, wheel...done.

El entorno aislado (llamado sandbox) se creará en el directorio actual donde ejecutó el comando anterior. Busque la carpeta llamada py27env (podría ser un nombre diferente en su caso).

# ls -ld py27env/
drwxr-xr-x. 5 root root 4096 Jan 21 15:25 py27env/

Necesitas activar el sandbox py27env :

# source py27env/bin/activate
(py27env)

Ahora, verifique la versión de python como se muestra a continuación:

# python --version
Python 2.7.6

El resultado anterior muestra que se encuentra en el entorno limitado de Python 2.7.6. Para volver a la versión de Python instalada en el sistema, solo tiene que desactivarla como se indica a continuación:

(py27env)# deactivate

Compruebe la versión ahora:

# python --version
Python 2.6.6 //You are now back to default Python environment.

Cree un entorno de espacio aislado para Python 3.5

Usamos virtualenv para crear una zona de pruebas para Python 2.5, pero para Python 3.5 usaremos un comando integrado llamado pyvenv-3.5.

# pyvenv-3.5 py35environment
(py35environment)

Encontrará un directorio llamado 'py35environment' en el directorio actual. Activemos ahora el entorno de Python 3.5 como se muestra a continuación:

# source py35environment/bin/activate
(py35environment)
(py35environment) # python --version
Python 3.5.1

Desactívelo de la siguiente manera:

(py35environment) # deactivate
# python --version
Python 2.6.6

¡Eso es todo! Ahora tiene dos entornos de Python diferentes y lo hizo sin estropear nada. Espero que este tutorial te haya ayudado.


Linux
  1. Firewall Raspberry Pi:cómo instalarlo y administrarlo mediante UFW

  2. Cree un entorno virtual para diferentes versiones de Python usando Conda

  3. Cómo instalar y cambiar versiones de Python en Ubuntu 20.04

  4. Cómo usar múltiples versiones de Node.js usando NVM

  5. ¿Cómo puedo compilar, instalar y ejecutar las herramientas dentro de kernel/tools?

VMware:cómo crear una máquina virtual e instalar un sistema operativo invitado mediante vSphere Client

Cómo instalar y usar YouTube-DL en el sistema Linux

Cómo instalar y configurar AnyDesk en el sistema Linux

Cómo instalar y configurar Django en un sistema Linux

Cómo instalar y configurar PrestaShop en el sistema Linux

Cómo instalar y configurar Elasticsearch en el sistema Linux