Resuelva problemas entre Python y Linux con virtualenv
Si bien los SO de Linux favorecen a Python 2, Python 3 es la versión ampliamente preferida. Instale virtualenv para aislar Python 2 y 3 y evitar problemas de TI.
Ubuntu, Debian y otras versiones de Linux todavía vienen con Python 2 instalado, a pesar de la década de Python 3 en la escena.
Python 3 debutó en 2008. La versión final de Python 2, 2.7, salió en 2010. Python 2 llegará al final de su vida en 2020, cinco años más tarde de lo originalmente planeado. Los usuarios de Python 2 argumentaron que no podían, o no querían, actualizarse antes de este plazo de 2020.
Los desarrolladores y administradores de sistemas necesitan usar Python y Linux juntos mientras estas dos versiones de Python están disponibles. La mejor ruta para muchas organizaciones de TI es ejecutar la versión 2.x y 3.x al mismo tiempo en un sistema.
Versiones de Python
Python 2 y 3 son casi lo mismo. La característica más obsoleta de Python 2 es un requisito para poner paréntesis () alrededor de la instrucción print(). Debido a que el nuevo desarrollo se centra en Python 3, los usuarios que se aferran a Python 2 podrían perder nuevos paquetes. El escenario no siempre es uno u otro. Por ejemplo, el sistema de orquestación en la nube OpenStack, que está escrito en Python, usa cualquiera de las versiones. La biblioteca de aprendizaje de máquina de fuente abierta TensorFlow está disponible en ambos también.
Linux y Python se encuentran en situaciones complicadas debido a las dos versiones. Para ilustrar, la solicitud which python en un nuevo servidor de Ubuntu produce la respuesta:
/usr/bin/python
El servidor Ubuntu ejecuta Python 2. Un administrador puede instalar Python 3 además y usar Python 3. Para ejecutar un sistema Linux con Python 3, siempre incluya python3 en lugar de python, o cree un alias que apunte a python3 o un enlace suave que habilite al usuario simplemente escribir python.
Cuando los usuarios instalan paquetes de Python, ellos van en dos carpetas, dependiendo de si usan el administrador de paquetes pip2 o pip3:
/usr/lib/python3.4
/usr/lib/python2.7
Ponga la versión incorrecta de Python en la carpeta incorrecta en la caja de Linux, y puede terminar con una situación irrecuperable (vea la Figura 1).
Un administrador puede profundizar e intentar instalar los paquetes Depends on en un intento de solucionar la situación, pero eso puede crear un desorden adicional (ver Figura 2). Los administradores generalmente arreglan las dependencias rotas a través de sudo apt-get install -f, pero este método generalmente no es efectivo con Python y Linux.
Para resolver los problemas de Python y Linux, instale la herramienta de aislamiento del entorno Python, virtualenv. Virtualenv crea múltiples entornos de Python para múltiples usuarios. Funciona mediante la instalación de los binarios de Python 2 y Python 3 en la carpeta de destino, que es preferiblemente la carpeta de inicio del usuario. Luego, instala los paquetes de Python en (target folder)/lib. También puede compartir paquetes en todo el sistema.
Instale virtualenv
Para comenzar a trabajar con virtualenv, ingrese sudo apt-get install virtualenv. O pruebe otras variaciones en el proceso de instalación.
Instale pip3:
sudo apt-get install python3-pip
Se instala en todo el sistema. Virtualenv instala otro pip3 en (target folder). Cambie al directorio de inicio y luego cree un entorno virtual de python2, en este caso (target folder):
cd virtualenv (target folder)
Abra este entorno python2 a través de los comandos:
source (target folder)/bin/activate
Verifique que el sistema Linux esté ejecutando Python en (carpeta de destino)/bin/ y no en el sistema Python:
which python
/home/(your id)/(target folder)/bin/python
Configure el entorno python3 virtualenv:
virtualenv -p python3 (target folder)
Luego, escriba python3 para ejecutar Python 3.
Verifique que pip3 esté instalado:
which pip3
/home/(your id)/(target folder)/bin/pip3
Instale un paquete y verifique que esté instalado en (target folder)/lib:
pip3 install requests
ls (target folder)/lib/python3.5/site-packages/requests
Cambie entre las versiones de Python
Si un servidor ya tiene Python 3, pero una tarea o programa determinado requiere Python 2, use este comando:
virtualenv --python=/usr/bin/python (target directory)
source (target directory)/bin/activate
python