Conecta con nosotros

A Fondo

Los 12 sabores de Python más interesantes para los programadores

Publicado el

Los 12 sabores de Python más interesantes para los programadores

En la actualidad, Python es uno de los lenguajes de programación más popular entre los desarrolladores. Los que lo eligen para el desarrollo de software pueden elegir entre una gran variedad de distribuciones, compiladores e intérpretes para dar forma a su código y desarrollar sus programas. Pero para ello se puede elegir entre varios sabores de Python, y en función de las necesidades de desarrollo será más adecuado emplear unos u otros.

A continuación presentamos una docena de sabores de Python de todo tipo, que van desde la implementación estándar del lenguaje, CPython, hasta otras optimizadas para casos de uso específicos, como Anaconda o ActivePython; e incluso para lo último en experimentación.

CPython

Como hemos mencionado, CPython es la implementación estándar de Python. Es decir, la versión estándar que toman como punto de partida el resto de distribuciones. Como se puede deducir de su nombre, está escrita en C, y es obra del mismo grupo de gente responsable de la toma de las principales decisiones sobre el lenguaje Python.

Por ser la implementación de referencia de este lenguaje, es quizá el sabor más conservador en cuanto a optimizaciones. Esto se debe también a que los encargados de su mantenimiento quieren que sea la implementación de Python de mayor compatibilidad y más estandarizada posible. Es sin duda la mejor elección cuando se necesita un mayor nivel de compatibilidad y confort programando en Python, por encima de rendimiento, por ejemplo.

También es una buena elección para expertos que quieran trabajar con las bases de Python, y que estén dispuestos a renunciar a ciertas comodidades y opciones de automatización, como las facilidades que ofrecen otras distribuciones para el desarrollo de entornos virtuales. Esto no quiere decir que no se puedan desarrollar con CPython, pero será necesario trabajar un poco más para conseguirlo.

Así, CPython no cuenta con las optimizaciones de rendimiento de otras ediciones. No tiene compilador de JIT nativo, ni tampoco ciertas librerías matemáticas. Tampoco cuenta con añadidos de terceros para mejorar el rendimiento. Si se pueden añadir, no obstante, pero no las trae integradas de fábrica. Las implementaciones que se quieran hacer en esta distribución para mejorar el rendimiento tendrá que hacerlas cada desarrollador por su cuenta. Además, CPython solo proporciona un conjunto básico de herramientas para trabajar con Python.

Anaconda Python

Desarrollada por la compañía Anaconda, esta distribución está pensada para desarrolladores de Python que necesiten cierto respaldo por parte de un proveedor comercial, y que cuente con planes de apoyo para empresas. Se utiliza sobre todo en desarrollos de áreas como matemáticas, estadística, ingeniería, análisis de datos o machine learning. Incorpora la mayor parte de las librerías más comunes en el trabajo comercial y científico con Python, como SciPy, NumPy o Numba. Además, facilita el acceso a ellas a través de un sistema de gestión de paquetes personalizado.

El punto que aporta más ventaja a Anaconda Python con respecto a otras distribuciones es la integración de sus distintos componentes. Cuando se instala ofrece una app de escritorio, denominada Anaconda Navigator, que proporciona acceso a todos los elementos del entorno a través de una interfaz gráfica de usuario.

Otro de sus puntos fuertes reside en la forma en la que Anaconda gestiona componentes ajenos al ecosistema de Python si se las necesita para un paquete concreto. El gestor de paquetes conda, creado específicamente para Anaconda, gestiona la instalación tanto de paquetes de Python como en los requisitos de software externos de terceros.

Pero como todo, Anaconda también tiene puntos débiles. Su tamaño, debido a la cantidad de librerías que incorpora, es mucho mayor que el de CPython. Una instalación básica de CPython ocupa unos 100 MB, mientras que una de Anaconda puede ocupar varios Gigabytes, y puede ser un problema si no se cuenta con mucho espacio. Para estos casos, no obstante, hay una distribución llamada Miniconda, una versión reducida de Anaconda con solo lo mínimo para que sea funcional y luego añadirle paquetes cuando se necesiten.

ActivePython

ActivePython también es obra, como Anaconda, del desarrollo de una empresa: ActiveState. Está pensado para empresas y científicos de datos. Esto es, para los que quieran usar Python pero no quieran perder mucho tiempo ni esfuerzo ensamblando y gestionando una instalación de Python. ActivePython usa el gestor de paquetes más popular de Python, pip. Pero también cuenta con multitud de librerías comunes, aparte de algunas con dependencias de terceros, como Intel Math Kernel.

Esto, no obstante, tiene una complicación, ya que si se necesita actualizar a una nueva versión de un proyecto con dependencias complejas, será necesario actualizar también la instalación de ActivePython. Si el entorno en el que se desarrolla está ligado a una versión específica de un proyecto, no habrá mayores problemas. Pero si el desarrollo tiende a migrar hacia las últimas versiones, podría suponer un problema.

PyPy

Este sustituto del intérprete de CPhyton emplea compilación JIT para acelerar la ejecución de los programas en Python. En ocasiones, en función de la tarea en ejecución, incluso de manera muy notable. Con él queda por tanto solucionada una de las principales quejas sobre Python en general y CPython en particular: su lentitud.

PyPy se encarga de solventar el problema, compilando código en Python a lenguaje máquina casi 8 veces más rápido, de media, que con CPython. Algunas tareas pueden llegar a ejecutarse hasta 50 veces más rápido, y todo sin ningún esfuerzo por parte del desarrollador. Eso sí, tiene algunas limitaciones. Por ejemplo, funciona mejor con aplicaciones de Python puras.

Jython

Jython se encarga de compilar código de Python 2.x para convertirlo en bytecode (una especie de código intermedio) preparado para una máquina virtual de Java (JVM) y ejecutarlo en la propia máquina. Su principal ventaja es la interoperabilidad directa con el resto de ecosistema Java. Además, al ejecutar Python en la JVM se logra que los desarrolladores de Python tengan acceso a un enorme ecosistema de librerías y frameworks que de otra manera no podrían usar.

Su principal limitación es que sólo es compatible con las versiones 2.x de Python. La compatibilidad de Jython con las 3.x está en desarrollo. Y aunque Jython lleva Python a las JVM, no lo acerca a Android, y no se puede utilizar para desarrollar aplicaciones para dicho sistema operativo.

IronPython

IronPython es una implementación de Python en el entorno de ejecución .Net, o CLR (Common Language Runtime, o Entorno de ejecución de lenguaje común). Esta implementación emplea el DLR (entorno de ejecución de lenguaje dinámico) del CLR para permitir a los programas en Python ejecutarse con el mismo nivel de dinamismo que lo hacen en CPython.

Tal como sucede con Jython, IronPython es un puente. Su principal caso de uso es facilitar la interoperabilidad entre Python y el universo .Net. Así, los ensamblajes .Net existentes pueden cargarse en programas de IronPython a través de la sintaxis de manipulación de objetos e importación nativas de Python. También se puede compilar código de IronPython en un ensamblaje y ejecutarlo tal cual o invocarlo desde otros lenguajes. Lo malo es que todavía no es compatible con Python 3.x, aunque sus desarrolladores ya están también trabajando en la compatibilidad con Python 3.

WinPython

Como indica su nombre, WinPython es una distribución de Python creada específicamente para usuarios de Windows. Su nacimiento llegó debido a que las versiones previas de CPython para Windows no estaban bien diseñadas, y los usuarios de Windows que querían programar en Python no podían aprovechar todos los aspectos del lenguaje. Pero a pesar de que ha mejorado, WinPython todavía sigue ofreciendo muchas cosas que CPython no proporciona a usuarios de Windows.

Es además una edición de Python que no necesita instalarse en la máquina en la que se ejecuta. Tan solo hay que descomprimirla en un directorio. Esto la convierte en una aliada en casos en los que en un equipo no se puede instalar software, así como en situaciones en las que se necesita distribuir un entorno de desarrollo de Python preconfigurado con las aplicaciones para ejecutar en él. También en casos en los que sea necesario ejecutar varias ediciones de Python de manera simultánea y sin que interfieran entre ellas.

Además, se entrega con varios paquetes pensados para ciencia de datos, como NumPy, Pandas, SciPy o Matplotlib. También incluye un compilador de C y C++, ya que muchas máquinas de Windows no tienen uno incluido, y muchas extensiones de Python pueden necesitarlo. A los paquetes que lleva, que en ocasiones pueden resultar excesivos, se les pueden agregar otros a gusto del desarrollador.

Python Portable

Versión portable de Python, incluye varios paquetes pensados para la computación científica. Entre ellos están Matplotlib, Numba, SumPy, SciPy y Cython. Funciona sin necesidad de instalación en cualquier sistema Windows, tanto desde un directorio en local como en una unidad de almacenamiento extraible. Incorpora el IDE Spyder y el gestor de paquetes pip. Eso sí, no lleva un compilador de C y C++.

Cuatro distribuciones experimentales

Los cuatro sabores de Python restantes son distribuciones experimentales que cambian Python de manera notable. En algunos casos emplean Python como punto de partida. También porque su desarrollo se basa en cambios estratégicos sobre Python estándar. Por lo tanto, están recomendadas únicamente para experimentar y desarrollos de pruebas, no para pasar código a producción. Hablamos de MicroPython, Pycopy, RustPython y MesaPy.

La primera de ellas, MicroPython, ofrece un sobconjunto mínimo del lenguaje Python, pensado para ejecutarse en hardware de muy bajo nivel, como sucede con los microcontroladores. Implementa Python 3.4 con algunas diferencias con respecto al estándar. No obstante, escribir código en MicroPython es sencillo si conoces el lenguaje Python, pero el código existente no se puede utilizar tal cual en esta distribución.

Pycopy es una implementación minimalista y centrada en la eficiencia de memora para sistemas limitadoso microcontroladores. Se basa en el proyecto MicroPython, pero tiene objetivos distintos. Así, está pensado para ser compatible con un conjunto de elementos del ecosistema Python.

La tercera de estas distribuciones, RustPython, implementa un entorno de ejecución en el lenguaje Rust, que saca partido a la seguridad de memoria y la velocidad de Rust. Es compatible solo con un subconjunto de la sintaxis de Python, pero sus creadores están trabajando para ampliar los elementos con los que puede funcionar.

Por último, MesaPy, una distribución de Python basada en el entorno de ejecución PyPy en lugar de en el de CPython, y se desarrolló para contar con más seguridad. Las tripas de PyPy cuentan con un refuerzo de la seguridad adicional. El código fuente de C que tiene está unido a herramientas de verificación formal. Su entorno de ejecución usa el entorno seguro Intel SGX para un mayor nivel de seguridad.

Redactora de tecnología con más de 15 años de experiencia, salté del papel a la Red y ya no me muevo de ella. Inquieta y curiosa por naturaleza, siempre estoy al día de lo que pasa en el sector.

Lo más leído