Herramientas útiles para el desarrollo local

Herramientas útiles que te pueden ayudar a desarrollar código de Python para Exercism en tu propia computadora.


Note

Esta es una colección de herramientas populares en nuestra comunidad. No pretende ser prescriptiva ni exhaustiva. Creemos que estas herramientas hacen bien su trabajo, pero sin duda existen otras que también son buenas. Si tienes una recomendación de editor, IDE, herramienta o complemento, te animamos a agregarla a este documento en GitHub.



Antes de empezar a explorar, asegúrate de tener instalada una versión reciente de Python. La plataforma web de Exercism es compatible actualmente con Python 3.10 - 3.13.5 (ejercicios y pruebas) y Python 3.13.5 (herramientas). Nuestro ejecutor de pruebas en línea usa actualmente pytest 8.4.0 y pytest-subtests 0.14.2. Nuestro analizador en línea usa pylint 4.0.4. Usar versiones distintas de Python, pytest o pylint de forma local podría darte resultados diferentes a los del sitio web. Para más información, consulta Instalar Python localmente.


Entornos virtuales

Los entornos virtuales de Python ofrecen un aislamiento ligero del entorno de ejecución y de los paquetes. Pueden ayudarte a organizar tus proyectos al mantener juntos los paquetes de Python que instalas dentro de un directorio de entorno específico. Distintos entornos pueden contener diferentes versiones del entorno de ejecución de Python junto con las dependencias de un proyecto o de una biblioteca. Esto ayuda a evitar bugs e incompatibilidades causados por actualizar una biblioteca para un proyecto que «rompe» una dependencia de otro.

Hoy en día existen muchas herramientas de entorno virtual y similares a entornos virtuales, y un movimiento creciente que prefiere usar metadatos de scripts en línea, contenedores de desarrollo o docker en lugar de entornos virtuales. Es importante probar distintas estrategias y encontrar la que se adapte a tu estilo de desarrollo y a las necesidades de tu proyecto. No asumas que las estrategias de aquí sirven para todos los casos ni que son tus únicas opciones. Para un repaso más general de herramientas que no se cubren aquí, echa un vistazo a esta publicación de blog de Bas Nijholt y mantén la curiosidad.

Aquí cubriremos tres herramientas principales de entorno virtual: la biblioteca estándar de Python venv, el de terceros conda env, que usa el gestor de paquetes conda y (por lo general) la distribución Anaconda de Python, y el reemplazo de pip + venv de terceros, uv. Las tres son bastante sencillas de usar o de instalar.

Además, PyEnv, Poetry y virtualenvwrapper son herramientas que pueden ayudarte a gestionar varias versiones de Python y varios entornos de Python en la misma máquina.


Crear un entorno virtual con venv

Para crear un entorno virtual con venv, entra con cd al directorio donde quieres guardar tus entornos. Este debe ser un directorio separado del código de tu proyecto y que no vayas a poner bajo control de versiones. Luego, ejecuta el comando venv con el nombre de una carpeta donde quieras guardar este entorno en particular. Por convención, se suele llamar a esa carpeta <project-name-here>_venv:

Windows

PS C:\Users\foobar> py -m venv {name_of_virtualenv}

Para activar el entorno virtual, ejecuta el siguiente comando:

PS> .\{name_of_virtual_env}\Scripts\activate.bat
(venv) PS> _

Linux/MacOS

$ python3 -m venv {name_of_virtualenv}
created virtual environment ... in 8568ms

Para activar el entorno virtual, ejecuta el siguiente comando:

$ source {name_of_virtual_env}/bin/activate
(venv) $ _

Una vez que un venv está activado, puedes ejecutar comandos de pip para instalar paquetes «dentro» del entorno. Los paquetes instalados se asociarán con la versión de Python del venv y se ubicarán dentro de {name_of_virtual_env}/Lib.

Para desactivar un entorno virtual, puedes llamar al script deactivate, que se encuentra en el mismo directorio que activate.


Crear un entorno virtual con conda

La versión más reciente de conda se puede instalar a través de miniconda. Esta guía rápida de conda es muy útil, al igual que la documentación de conda.

Creado originalmente como gestor de paquetes de Python para la popular Anaconda distribution de «Python científico», conda se generalizó y amplió más tarde. Los entornos de conda son similares a los venv, con la diferencia clave de que conda puede crear entornos virtuales e instalar paquetes para muchos otros lenguajes de programación además de Python.

Entre los lenguajes que conda admite están R, JavaScript, Ruby, Fortran, C/C++, Scala, Java y más. Para comparar los comandos de conda vs venv, consulta la referencia de comandos de conda.


MacOS/Linux

Para crear un entorno de conda, escribe lo siguiente, reemplazando {name of environment} con el nombre que elijas y python={version} con la versión de Python que quieras. Después puedes agregar los paquetes adicionales que quieras instalar dentro del entorno:

$ conda create --name {name of environment} python={version} "pytest>6.0" pylint
...

## Package Plan ##

  environment location: /usr/local/anaconda3/envs/test_env

  added / updated specs:
    - pylint
    - pytest[version='>6']
    - python=3.10


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    astroid-2.11.1             |  py310h2ec42d9_0         364 KB  conda-forge
    dill-0.3.4                 |     pyhd8ed1ab_0          62 KB  conda-forge
    lazy-object-proxy-1.7.1    |  py310he24745e_0          32 KB  conda-forge
    ....
    additional packages here
    ....
    ------------------------------------------------------------
                                           Total:        21.8 MB

Proceed ([y]/n)? y

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate test_env
#
# To deactivate an active environment, use
#
#     $ conda deactivate

Windows

Crear un entorno de conda en Windows usa los mismos comandos generales que en Linux/MacOS. Sin embargo, se recomienda usar los prompts de cmd o powershell de Anaconda en lugar de agregar conda a tu path:

(base) PS C:\Users\foobar> conda create --name {name_of_environment} python={version} "pytest>6" pylint
...

Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: C:\ProgramData\Anaconda3\envs\test_env

  added / updated specs:
    - pylint
    - pytest[version='>6']
    - python=3.10


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    astroid-2.11.1             |  py310h5588dad_0         364 KB  conda-forge
    attrs-21.4.0               |     pyhd8ed1ab_0          49 KB  conda-forge
    bzip2-1.0.8                |       h8ffe710_4         149 KB  conda-forge
    ...
    additional packages here
    ...
    ------------------------------------------------------------
                                           Total:        37.5 MB

Proceed ([y]/n)? y
...
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate test_env
#
# To deactivate an active environment, use
#
#     $ conda deactivate

UV

Trabajar en proyectos con uv: uv

uv es una herramienta de gestión de paquetes y proyectos de Python de Astral, escrita en Rust. Fue diseñada para reemplazar a pip, venv, poetry y otras herramientas de gestión de paquetes y dependencias de Python. A diferencia de Conda o Mamba, uv está especializada y pensada solo para Python. Sin embargo, uv sí admite compilar módulos de extensión de Python escritos en otros lenguajes, como Fortran. Astral también es el desarrollador del popular linter Ruff y de TY, un verificador de tipos estático para las anotaciones de tipo de Python, ambos escritos en Rust.

En lugar de entrar en detalles aquí, la documentación de UV es tu mejor fuente para la instalación y la configuración.

Contenedor de entornos virtuales

Documentación y contexto: virtualenvwrapper.

El paquete virtualenvwrapper funciona sobre venv para gestionar todos tus entornos virtuales en un solo lugar. Puedes crear, copiar, eliminar y cambiar entre entornos con comandos similares a los de Linux, como lsvirtualenv (para listar entornos) y mkvirtualenv (para crear un entorno). También te permite agregar herramientas de gestión adicionales mediante extensiones. Incluso puedes crear tus propias extensiones para la herramienta con este tutorial.


PyEnv

pyenv es la bifurcación para Python de las populares herramientas rbenv/ruby-build, modificada para Python. Es esencialmente un conjunto de scripts y shims que permiten establecer versiones de Python tanto de forma global como específica por usuario. Intenta seguir la tradición de Unix de una herramienta discreta, de propósito único, que hace bien una sola cosa.

pyenv y su documentación se pueden encontrar en GitHub.



Editores e IDE



Visual Studio Code

Visual Studio Code (VS Code) es un editor de código gratuito creado por Microsoft. Incluye un gran soporte tanto para entornos virtuales y de conda como para docker (mediante el complemento de docker), y se puede ampliar con muchos complementos distintos para pruebas, linting, formato y desarrollo web.

Python para VS Code

Id de la extensión: ms-python.python

Encabezado de la extensión de Python en VS Code

La extensión de Python de Microsoft es la extensión oficial de Python de Microsoft para VS Code, y una instalación muy recomendada. Tiene una amplia variedad de funcionalidades, como gestión de entornos, gestión de pruebas, linting y depuración. A partir de la última versión, instalar la extensión de Python de MS también descargará pylance (un paquete popular para hacer linting y validar código de Python) y jupyter (para trabajar con Jupyter Notebooks).

  • Hay un tutorial de configuración disponible aquí y la referencia de configuración es muy útil.
  • Puedes encontrar información sobre cómo configurar versiones de Python y trabajar con entornos virtuales aquí.
  • Puedes encontrar información sobre cómo configurar y trabajar con unittest y pytest en VS Code aquí.

PyCharm

PyCharm es un IDE (entorno de desarrollo integrado) creado por JetBrains. Está diseñado específicamente para Python y es popular entre los profesionales. Al igual que VS Code, se puede ampliar con diversos complementos, temas y formateadores, tanto de pago como gratuitos. La versión de pago también admite el desarrollo con Django, el desarrollo con Docker y la integración con bases de datos.

PyCharm y Pytest
  • Puedes encontrar los pasos para configurar pytest con PyCharm aquí.
  • PyCharm usa unittest de forma predeterminada, así que debes tener pytest instalado en el entorno que usas con PyCharm (consulta los documentos sobre el intérprete y el entorno más arriba) y luego indicarle a PyCharm que lo use.
  • Ejecutar pruebas directamente desde la GUI es muy fácil, pero no olvides echar un buen vistazo a los parámetros de pytest subyacentes, para configurarlo a tu gusto.
  • Puedes encontrar documentación general sobre cómo ejecutar pruebas y depurar en PyCharm aquí.

Spyder IDE

Spyder es un IDE de Python gratuito, de código abierto y multiplataforma, pensado para la comunidad científica. Por lo general, se incluye con la distribución Anaconda de Python, pero se puede instalar por separado y usar con cualquier versión de Python. Recomendamos una instalación independiente para asegurar la máxima flexibilidad y evitar conflictos de paquetes.

Spyder es totalmente compatible con entornos de venv y conda. Incluye un terminal interactivo de IPython integrado, un depurador interactivo y un amplio soporte para generar gráficos y explorar datos dentro del editor. El autocompletado de código y el linting adicionales se ofrecen a través de kite. Las integraciones con Jupyter Notebooks y las herramientas de prueba se ofrecen mediante complementos desarrollados por la comunidad. También puedes escribir tus propios complementos usando la API de Spyder.


Emacs

Emacs es un editor de texto gratuito, de código abierto y muy personalizable, escrito en Lisp. Hay una excelente guía de instalación y configuración en Real Python.

  • La Emacs Wiki también tiene una buena guía para programar en Python con Emacs.
  • Full Stack Python también reúne información y enlaces útiles para empezar con Emacs.

Vim

Vim es una versión gratuita y «mejorada» del editor de texto estándar vi de Unix. Está disponible en una amplia variedad de sistemas operativos y distribuciones de Linux y Unix. Hay una excelente guía de instalación y configuración en Real Python, y también hay útiles guías rápidas en vimsheet, glump y rtorr.

Aunque decidas que editar código de Python en vim no es para ti, se recomienda que te familiarices con un conjunto básico de comandos. vim o vi suele ser un editor de texto «base» o «predeterminado» en las distribuciones de Linux y Unix, y es el editor predeterminado para los mensajes de commit de git (entre otras cosas) en esos sistemas. Es muy probable que termines en un sistema *nix teniendo que editar un archivo de configuración con solo vi disponible, así que saber cómo salir de vim es (como mínimo) una buena defensa personal.


Spacemacs

Spacemacs (repositorio de GitHub) es una distribución gratuita de Emacs impulsada por la comunidad que combina funcionalidades de Emacs y de Vim.

  • Puedes encontrar la documentación oficial aquí
  • Esta guía de opensource ofrece un resumen rápido de las opciones de instalación y configuración.
  • La capa de Python de Spacemacs agrega funcionalidades para pruebas, linting, gestión de entornos y formato de código.

Sublime Text

Sublime Text es un editor de texto de pago para programar, creado por Sublime HQ Pty Ltd. Es similar a VS Code y Atom, con muchos paquetes y complementos para personalizarlo. También puedes desarrollar tus propios complementos para el editor usando Python.