Herramientas útiles que te pueden ayudar a desarrollar tu código de Python para Exercism en tu propio ordenador.
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.
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.
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.
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.
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
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
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.
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 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.
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.
Id. de la extensión: ms-python.python

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).
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.
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.coverage de pytest rompe el depurador de PyCharm.
Consulta configuración de ejecución y depuración: pytest para más información.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.
Spyder: preguntas frecuentes
Configurar versiones y entornos virtuales de Python en Spyder
Configurar Spyder para ejecutar tests de unittest y pytest mediante el plugin unittest de Spyder
Plugins de Spyder adicionales
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.
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 (repositorio de GitHub) es una distribución de Emacs gratuita impulsada por la comunidad que combina funcionalidades de Emacs y de Vim.
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.