Herramientas útiles para el desarrollo local

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


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 hay otras que también son buenas. Si tienes alguna recomendación de editor, IDE, herramienta o plugin, te animamos a añadirla 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 admite actualmente Python 3.10 - 3.13.5 (ejercicios y tests) y Python 3.13.5 (herramientas). Nuestro ejecutor de tests 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. Si usas versiones distintas de Python, pytest o pylint en local, es posible que obtengas resultados diferentes a los del sitio web. Para más información, consulta Instalar Python en local.


Entornos virtuales

Los entornos virtuales de Python ofrecen un aislamiento ligero tanto del entorno de ejecución como de los paquetes. Pueden ayudarte a organizar tus proyectos manteniendo agrupados los paquetes de Python que instalas dentro del directorio de un entorno concreto. Distintos entornos pueden contener versiones distintas del runtime de Python junto con las dependencias de cualquier proyecto o biblioteca. Esto ayuda a evitar errores e incompatibilidades causados por actualizar una biblioteca para un proyecto, lo que «rompe» una dependencia de otro.

Hoy en día se usan muchas herramientas de entorno virtual y similares, y cada vez más gente apuesta por usar metadatos de script en línea, contenedores de desarrollo o Docker en lugar de entornos virtuales. Es importante probar distintas estrategias y encontrar la que mejor se adapte a tu estilo de desarrollo y a las necesidades de tu proyecto. No des por hecho que las estrategias de aquí sirven para todo el mundo ni que son tus únicas opciones. Para un repaso más general de herramientas que no se tratan aquí, echa un vistazo a esta entrada del blog de Bas Nijholt y mantén la curiosidad.

Aquí vamos a hablar de tres herramientas principales de entorno virtual: la biblioteca estándar de Python venv; conda env, de terceros, que usa el gestor de paquetes conda y (normalmente) la distribución Anaconda de Python; y uv, de terceros, el sustituto de pip + venv. Las tres son bastante sencillas de usar o 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, usa cd para ir al directorio donde quieras guardar tus entornos. Debe ser un directorio distinto del código de tu proyecto y en el que no vayas a hacer seguimiento con control de versiones. Después, ejecuta el comando venv con el nombre de la carpeta donde quieras guardar este entorno concreto. Lo habitual es 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 activado un venv, puedes ejecutar comandos pip para instalar paquetes «dentro» del entorno. Los paquetes instalados se asociarán a la versión de Python de ese venv y se ubicarán dentro de {name_of_virtual_env}/Lib.

Puedes desactivar un entorno virtual llamando al script deactivate, que se encuentra en el mismo directorio que activate.


Crear un entorno virtual con conda

La última versión de conda se puede instalar con miniconda. Este chuletario de conda es muy útil, al igual que la documentación de conda.

conda se creó originalmente como gestor de paquetes de Python para la popular Anaconda distribution de «Python científico», y más tarde se generalizó y amplió. 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 admite conda están R, JavaScript, Ruby, Fortran, C/C++, Scala, Java y muchos más. Para comparar los comandos de conda y venv, consulta la referencia de comandos de conda.


MacOS/Linux

Para crear un entorno de conda, escribe lo siguiente, sustituyendo {name of environment} por el nombre que elijas y python={version} por la versión de Python que quieras. A continuación puedes añadir 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 símbolos del sistema cmd o powershell de Anaconda en lugar de añadir 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. Se diseñó para sustituir 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 adaptada únicamente a 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 estático de tipos 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.

Wrapper 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 de estilo Linux como lsvirtualenv (para listar entornos) y mkvirtualenv (para crear un entorno). También te permite añadir herramientas de gestión adicionales mediante extensiones. Incluso puedes crear tus propias extensiones para la herramienta con este tutorial.


PyEnv

pyenv es el fork para Python de las populares herramientas rbenv/ruby-build, adaptadas para Python. Básicamente es un conjunto de scripts y shims que permiten establecer versiones de Python tanto a nivel global como por usuario. Intenta seguir la tradición Unix de una herramienta de un solo propósito, discreta, que hace bien una única cosa.

pyenv y la documentación de pyenv están en GitHub.



Editores e IDE



Visual Studio Code

Visual Studio Code (VS Code) es un editor de código gratuito creado por Microsoft. Incluye una gran compatibilidad tanto con entornos virtuales y de conda como con docker (a través del plugin de Docker) y se puede ampliar con muchos plugins distintos para tests, 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 Microsoft para Python en VS Code y una instalación muy recomendable. Tiene una amplia gama de funcionalidades, como la gestión de entornos, la gestión de tests, el linting y la depuración. A partir de la última versión, instalar la extensión de Python de Microsoft también descarga pylance (un popular paquete para hacer linting y validar código Python) y jupyter (para trabajar con Jupyter Notebooks).

  • Tienes un tutorial de configuración aquí y la referencia de ajustes es muy útil.
  • Encontrarás información sobre cómo configurar versiones de Python y trabajar con entornos virtuales aquí.
  • Encontrarás información sobre cómo configurar y usar 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. Como VS Code, se puede ampliar con distintos plugins, temas y formateadores, de pago y gratuitos. La versión de pago también admite desarrollo con Django, desarrollo con Docker y integración con bases de datos.

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

IDE Spyder

Spyder es un IDE de Python gratuito, de código abierto y multiplataforma, pensado para la comunidad científica. Suele incluirse 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 garantizar la máxima flexibilidad y evitar conflictos entre paquetes.

Spyder es totalmente compatible con entornos venv y conda. Incluye un terminal interactivo IPython integrado, un depurador interactivo y una gran compatibilidad con la representación gráfica y la exploración de datos dentro del editor. La finalización de código y el linting adicionales se ofrecen a través de kite. Las integraciones con Jupyter Notebooks y con herramientas de testing se ofrecen mediante plugins desarrollados por la comunidad. También puedes escribir tus propios plugins usando la API de Spyder.


Emacs

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

  • 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 de Unix vi. Está disponible en una amplia variedad de sistemas operativos y distribuciones de Linux y Unix. Real Python ofrece una magnífica guía de instalación y configuración, y tienes prácticos chuletarios en vimsheet, glump y rtorr.

Aunque decidas que editar código Python en vim no es para ti, te recomendamos familiarizarte 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 escribir los mensajes de commit de git (entre otras cosas) en esos sistemas. Es muy probable que acabes en un sistema *nix necesitando 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 de Emacs gratuita impulsada por la comunidad que combina funcionalidades de Emacs y de Vim.

  • Encontrarás la documentación oficial aquí
  • Esta guía de opensource ofrece un rápido repaso de las opciones de instalación y configuración.
  • La capa de Python de Spacemacs añade funcionalidades para tests, 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 plugins para personalizarlo. También puedes desarrollar tus propios plugins para el editor usando Python.