/ python

Tips para desarrollo en python

En esta ocasión voy a describir algunos puntos importantes a considerar cuando se desarrolla algún proyecto en python.

Versiones de python

Una herramienta útil para tener varias instalaciones de python en nuestra máquina de desarrollo es pyenv, esta herramienta permite instalar la versión de python que el proyecto requiera.

Por ejemplo si requerimos usar python 3.5 solo ejecutamos lo siguiente:

pyenv install 3.5.0

Esto instalará la versión 3.5.0 de python en ~/.pyenv/versions/

Entornos virtuales

Es muy útil y recomendado usar entornos virtuales para cada proyecto que se esté realizando, así podemos tener separadas las librerias usadas entre diferentes proyectos.

En python2 podemos instalar virtualenv desde pip con pip install virtualenv, en python3 ya viene instalado por defecto.

Para crear un nuevo entorno virtual llamado myenv ejecutamos lo siguiente:

# python 2
virtualenv myenv

# en python 3
python3 -m venv myenv

Y para activarlo usamos source myenv/bin/activate/ en sistemas *nix o myenv\scripts\activate.bat en windows.

Una forma mucho mas sencilla de administrar los diferentes entornos virtuales que vayamos a crear es usar virtualenvwrapper, esta es una herramienta que nos brinda una serie de comandos(crear, activar, eliminar, etc) para que sea mucho mas facil usar los entornos virtuales.

Podemos usar Virtualenvwrapper junto con pyenv para crear un entorno virtual con una versión específica de python.

Por ejemplo, para crear un entorno virtual con python 3.5 ejecutamos lo siguiente:

mkvirtualenv venv-python-35 --python=~/.pyenv/versions/3.5.0/bin/python3

Otra herramienta bastante interesante es fades, esta herramienta permite crear entornos virtuales "al vuelo" de acuerdo a las dependencias que use el script que vamos a ejecutar.

Guias de estilos

Mantener la uniformidad del código es un punto importante a considerar sobre todo cuando se trabaja en equipo, asi también para mantener un código legible.

Se recomienda usar la guía PEP8 (ahora llamada pycodestyle) la cual tiene una serie de reglas sobre como escribir código python, por ejemplo usar underscorecase para definir variables, funciones, etc o el orden de importación de módulos entre otras.

Es importante tener en cuenta estas reglas y respetarlas dentro del proyecto, incluso si se desea se puede definir una propia guia de estilos dentro del proyecto pero lo importante es que todo el equipo la siga.

Para poder revisar todos los archivos del proyecto se puede usar la librería del mismo nombre pep8 la cual permite revisar los archivos de código fuente y nos dice donde no se esta siguiendo la guía de estilo.

Otra herramienta bastante útil es flake8, esta nos permite, además de revisar que se cumpla la PEP8, revisar si existen variables declaradas pero no usadas, imports que no se usan, etc. Lo cual permite que el código resultante sea más limpio.

Un plugin bastante útil es pep8-naming, trabaja con flake8 y verifica la nomenclatura de las variables, clases, métodos, etc.

Editores/IDEs

Recordar las reglas de la guía de estilo o revisar el código luego de hacerlo puede resultar un poco tedioso, por eso los editores/IDEs nos pueden ayudar a hacer esta revisión mientras se escribe el código.

PyCharm ya hace estas revisiones por defecto y nos muestra warnings en caso de que no se cumplan

Para editores es posibles hacer esto mediante el uso de plugins:

En vim existe un paquete llamado fisa-vim-config que trae todo lo necesario para trabajar con python.

En emacs existen una serie de paquetes que se pueden usar:

  • Elpy nos permite autocompletado, ejecutar tests, ir a la definición de una función, clase, etc. (yo uso este)
  • Anaconda-mode es un paquete parecido a Elpy.
  • Flycheck es un revisor de sintaxis para muchos lenguajes, entre ellos python.

Una herramienta no exclusiva de python pero bastante útil es EditorConfig, nos permite poder definir si se van a usar espacios o tabulaturas para la indentación, eliminar los espacios al final cada linea, entre otras cosas, es bastante útil ya que mediante un archivo .editorconfig se pueden definir estas reglas y automaticamente los editores/IDEs las detectarán y formatearan el código, así se evitan errores como por ejemplo que un archivo este indentado con espacios y otro con tabulaturas.