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