Rafnix Guzman
rafnixg

Follow

rafnixg

Follow
馃悕 Entornos virtuales en Python usando Pipenv

Photo by David Clode on Unsplash

馃悕 Entornos virtuales en Python usando Pipenv

Rafnix Guzman's photo
Rafnix Guzman
May 12, 2019

4 min read

Table of contents

  • Instalando Pipenv
  • Usando Pipenv
  • Consideraciones finales

Cuando iniciamos en el desarrollo con Python muchas veces no nos damos cuenta del dolor de cabeza que es mantener varios proyectos con diferentes versiones de dependencias en nuestra entorno de desarrollo local, a medida que vamos evolucionando vamos adquiriendo nuevas herramientas que mejoren nuestro flujo de trabajo, como el uso de entornos virtuales o manejadores de paquetes, entre otras, Pipenv es una de estas herramientas que nos ayudan mucho a integrar y mejorar nuestros flujos en Python, tanto es as铆 que su eslogan por as铆 decirlo es "Python Development Workflow for Humans".

Esta herramienta b谩sicamente nos ayuda a optimizar nuestro flujo de desarrollo unificando pip y virtualenv en una sola herramienta que funciona por linea de comandos (Terminal), lo que nos daria un entorno aislado en el cual instalar nuestras dependencia y luego replicar este mismo entorno en otra maquina gracias a el archivo que se genera Pipfile, que viene a ser el sustituto del archivo que genera pip requirements.txt

Instalando Pipenv

El proceso de instalaci贸n de Pipenv es muy sencillo, en esta ocasi贸n voy a detallar 2 formas de instalar usando lo indicado en la documentaci贸n oficial.

Si estas usando Ubuntu 16.04:

sudo apt install software-properties-common python-software-properties
sudo add-apt-repository ppa:pypa/ppa
sudo apt update
sudo apt install pipenv

Esta otra opci贸n es por si ya tienes instalado pip:

pip install pipenv

Como acabamos de ver la instalaci贸n es muy sencilla, de igual manera si tienen alg煤n problema con la instalaci贸n me pueden escribir.

Usando Pipenv

Para efectos de este ejemplo vamos a generar una aplicaci贸n sencilla usando Flask y haremos el t铆pico Hola Mundo, ya que este post no se trata de desarrollo de apps usando Flask

Primero creamos nuestro entorno virtual para aislar nuestra aplicaci贸n:

pipenv shell

Creating a virtualenv for this project鈥 Pipfile: /home/usuario/nombre_del_proyecto/Pipfile Using /usr/bin/python3 (3.6.7) to create virtualenv鈥

Con la ejecuci贸n de este comando se crea un entorno virtual si no existe, ademas de crear 2 archivos: Pipfile y Pipfile.lock.

Si se instala en un proyecto preexistente Pipenv convierte tu archivo requirements.txt en Pipfile.

Para este proyecto se ha creado un entorno con una versi贸n de python 3, si necesitas instalar una versi贸n de python 2 solo debes agregar el argumento --two, tambi茅n funciona para python 3 el argumento --three.

pipenv shell --two #Genera entorno en Python2
pipenv shell --three #Genera entorno en Python3

Ahora procedemos a instalar los paquetes que necesitamos, en nuestro caso Flask, pero supondremos que necesitamos una versi贸n especifica para este ejemplo usaremos la versi贸n 1.0, para el momento de escribir este post la versi贸n latest de Flask es la 1.0.2

pipenv install flask==1.0
Installing flask==1.0鈥 Adding flask to Pipfile's [packages]鈥 
鉁 Installation Succeeded Pipfile.lock not found, creating鈥 
Locking [dev-packages] dependencies鈥 
Locking [packages] dependencies鈥 
鉁 Success! 
Updated Pipfile.lock (db0e09)! 
Installing dependencies from Pipfile.lock (db0e09)鈥 
馃悕 鈻夆枆鈻夆枆鈻夆枆鈻夆枆鈻夆枆鈻夆枆鈻夆枆鈻夆枆鈻夆枆鈻夆枆鈻夆枆鈻夆枆鈻夆枆鈻夆枆鈻夆枆鈻夆枆 6/6 鈥

Con esto ya tendremos Flask instalado en nuestro entorno virtual, y procedemos a realizar nuestro desarrollo.

Crean un archivo llamado apps.py con este contenido dentro:

from flask import Flask app = Flask(name)

@app.route("/")
def hello():
    return "Hello World!"

Por ultimo iniciamos nuestro servidor Flask

FLASK_APP=apps.py flask run

* Serving Flask app "apps.py" * Environment: production WARNING: Do not use the development server in a production environment. Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

Con esto tendremos nuestro server Flask corriendo nuestro archivo apps.py.

Consideraciones finales

A lo largo de este post hemos visto como el flujo de trabajo se puede optimizar con el uso de esta herramienta, ya que no debemos generar los entornos virtuales por separado usando algo como virtualenv con el que como yo muchas personas no han estado conformes, tambi茅n hemos visto como instalar paquetes usando pipenv tan f谩cil como si us谩ramos pip, queda de parte de cada quien darle una probada a esta herramienta y ver si le ayuda a optimizar su flujo de desarrollo y mantener un poco m谩s homog茅neo los ambientes de desarrollo.

Si deseas que siga publicando contenido sobre entornos virtuales, pip, o explique m谩s a fondo los ficheros Pipfileo Pipfile.lock, que otros comandos puede ejecutar Pipenv, solo h谩zmelo saber en un comentario o a trav茅s de mi cuenta twitter @rafnixg

Referencias

Documentaci贸n Pipenv

Share this