Si usamos virtualenv a secas nos creará un entorno virtual de python2 y python3, pero en mi caso me interesa usar python3.5 para una aplicación que estoy haciendo. Así que hoy veremos como instalar y entrar en un entorno virtual de python.
Primero de todo, python es fácilmente extendible con módulos, los módulos son librerías que han programado otros y que hacen cosas, yo los llamo chinos, porque una vez compiladas, las librerías son binarios y si los editas con un editor de textos lo que ves es un galimatías de carácteres, lo comúnmente llamado “chinos”.
Ésta forma de programar nos permite avanzar mucho mas rápido en el desarrollo de nuestra aplicación, destinando nuestro tiempo a programar lo que hace realmente nuestra aplicación y facilitar el trabajo a la creación de por ejemplo la estructura de la página web con Flask y Bootstrap o un framework como django.
Los módulos las instalamos mediante un gestor de paquetes, como en cualquier distribución de gnu/linux, podemos especificar pip para python2 y pip3 para python3 o python3.5, ésto lo que hace es descargarte el módulo en el directorio /usr/local/lib/python3.5/dist-packages, con pip3 show podemos ver información del módulo:
laura@melatonina:/usr/src$ pip3 show flask Name: Flask Version: 1.0.2 Summary: A simple framework for building complex web applications. Home-page: https://www.palletsprojects.com/p/flask/ Author: Armin Ronacher Author-email: armin.ronacher@active-4.com License: BSD Location: /usr/local/lib/python3.5/dist-packages Requires: Jinja2, click, itsdangerous, Werkzeug
Si necesitas saber qué hace el módulo, es tan simple como ir al directorio correspondiente y editar el fichero .py correspondiente al módulo.
En python cuando queremos compartir un proyecto, lo común es trabajar en entornos virtuales. Lo que es realmente un entorno virtual es un directorio con mas directorios dentro y ahí entre éstos directorios está el código de nuestro programa. Cuando queramos compartir el proyecto, comprimiremos el directorio entero en el que hemos creado el entorno virtual.
En mi caso, estoy usando /usr/src/ para almacenar ahí los proyectos que voy creando. Ésto es una cosa que me liaba mucho con los virtualenv, que algunos los creaban en un sitio, otros en otro, otros ni siquiera lo especificaban y no me quedaba clara ésta información, hasta que di con ello, y espero que éste post permita ver la luz a más de uno :)
Pues vamos a crear un proyecto que se llama “miproyecto”, para ello me voy a /usr/src/ (no es necesario ser root para ejecutar python, si tienes problemas en crear el directorio, crealo como root y luego asignale los permisos del usuario que va a desarrollar sobre el entorno virtual.
laura@melatonina:~$ cd /usr/src laura@melatonina:/usr/src$ mkdir miproyecto laura@melatonina:/usr/src/miproyecto$ laura@melatonina:/usr/src$ $ virtualenv -p python3 venv Already using interpreter /usr/bin/python3 Using base prefix '/usr' New python executable in /home/laura/dev/miproyecto/venv/bin/python3 Also creating executable in /home/laura/dev/miproyecto/venv/bin/python Installing setuptools, pkg_resources, pip, wheel...done.
Ahora para entrar en el entorno virtual, vamos a ejecutar lo siguiente:
laura@melatonina:/usr/src$ source miproyecto/venv/bin/activate (miproyecto) laura@melatonina:/usr/src$
Ahora aquí podremos instalar los módulos
(miproyecto) laura@melatonina:/usr/src$ pip3 install django Collecting django Downloading https://files.pythonhosted.org/packages/d1/e5/2676be45ea49cfd09a663f289376b3888accd57ff06c953297bfdee1fb08/Django-2.1.3-py3-none-any.whl (7.3MB) 100% |████████████████████████████████| 7.3MB 703kB/s Collecting pytz (from django) Downloading https://files.pythonhosted.org/packages/f8/0e/2365ddc010afb3d79147f1dd544e5ee24bf4ece58ab99b16fbb465ce6dc0/pytz-2018.7-py2.py3-none-any.whl (506kB) 100% |████████████████████████████████| 512kB 1.2MB/s Installing collected packages: pytz, django Successfully installed django-2.1.3 pytz-2018.7
Para crear un proyecto con django hacemos lo siguiente:
(miproyecto) laura@melatonina:/usr/src/$ django-admin startproject miproyecto . (miproyecto) laura@melatonina:/usr/src/miproyecto$ ls manage.py venv miproyecto
para salir del entorno virtual usar deactivate
(miproyecto) laura@melatonina:/usr/src/miproyecto$ deactivate laura@melatonina:/usr/src/miproyecto$
Si algo no funciona, comprueba que has instalado python3 y virtualenv
(miproyecto) laura@melatonina:/usr/src/miproyecto$ dpkg -l |grep virtualenv 2489:ii python3-virtualenv 15.1.0+ds-1 all Python virtual environment creator 2675:ii virtualenv 15.1.0+ds-1 all Python virtual environment creator
Y listos el resto para otro post.
¡Qué bueno verte por los mundos de Python! Hace anda desarrollé un microservicio para redirecciones HTTP 301 que te reenvía a una URL o a otra según tu país de orígen (Usando librerías de MaxMind) y tu User Agent. Todo ello con Python 3.7 y Flask, súper fácil y rápido. Lo de los virtualenvs, siempre los pongo en mi home, en algún directorio en el que generalmente guardo las cosas que desarrollo.