Tabla de contenidos
- 1 ¿Qué es Python?
- 2 ¿Por qué Python?
- 3 Pequeña comparativa con otros lenguajes
- 4 Creador y origen del lenguaje
- 5 Python en la actualidad: organismos de liderazgo en la comunidad Python
- 6 Python 2 y Python 3
- 7 Los modos de uso de Python
- 8 La biblioteca estándar de Python
- 9 Frameworks Python para el desarrollo web
- 10 Lenguaje e intérprete Python
- 11 Implementaciones Python
- 12 Uso del intérprete Python
- 13 Distribución de software Python
- 14 Referencias y recursos de interés para el aprendizaje de Python
- 15 Administración de paquetes con PIP
- 16 Instalación del entorno de desarrollo básico Python en UNIX/Linux
- 17 Creación de entornos virtuales Python con venv
- 18 Relacionado
¿Qué es Python?
Python es un lenguaje de programación libre, multipropósito o de propósito general, multiparadigma, interpretado, de alto nivel con tipado dinámico fuerte, orientado a objetos, dotado de gestión automática de recursos y de sistema de gestión de excepciones.
Soporta la sobrecarga de operadores; dispone de recolector de basura como es lógico en un lenguaje de alto nivel, de una biblioteca estándar con la que es posible hacer prácticamente cualquier cosa, y además gran cantidad de bibliotecas de terceros; frameworks, …
Puede comunicarse con bases de datos, directorios LDAP, utilizar servicios Web, intercambiar información con programas de otras tecnologías, manipular archivos CVS, XML, PDF, imágenes, audio, vídeo, …
Puede comunicarse con periféricos: plotters, impresoras 3D, servomotores, …
- Multiparadigma: soporta metaprogramación, procedural, funcional, imperativa, de objetos y de scripting.
- Usado en múltiples ámbitos: web, desarrollo de interfaces gráficas, sistemas, aplicaciones científicas, videojuegos, inteligencia artificial, y más…
- Sintaxis clara y homogénea. Diseñado para ser simple.
- Multiplataforma. El intérprete Python está disponible en multitud de plataformas: (UNIX, Solaris, Linux, DOS, Windows, OS/2, Mac OS, …)
Lenguaje de muy alto nivel: Escribir una aplicación en Python requiere mucho menos tiempo de desarrollo y menos instrucciones de las que requeriría en C, C++ o Java, por poner unos pocos ejemplos.
Lenguaje interpretado: Esto significa que no es necesaria compilación ni enlazado, lo cual hace que verificar y experimentar con nuestro código sea rápido. Al no compilarse directamente a código máquina, esto introduce una capa de abstracción que lo hace más lento que, por ejemplo, C y C++, aunque este es un hecho que se da siempre entre lenguajes interpretados y compilados.
Sin embargo, Python es considerablemente rápido para ser un lenguaje interpretado, gracias a optimizaciones como el uso de bibliotecas en C (por ejemplo, NumPy) que pueden ejecutar operaciones críticas a velocidades cercanas a las de C/C++. La velocidad de Python es generalmente suficiente para una amplia gama de aplicaciones.
Extensible: Programando en C podemos agregar nuevas funcionalidades o módulos al intérprete, o enlazar programas Python a bibliotecas solo disponibles en formato binario (tal como bibliotecas gráficas comerciales).
Ámbitos de uso de Python
Python es enormemente polivalente. Entre otros ámbitos, Python es adecuado para:
- Desarrollo de aplicaciones en general
- Desarrollo web
- Análisis de datos
- Web scraping
- Big Data,
- Finanzas,
- Procesamiento del lenguaje Natural (NLP), Machine Learning y Deep Learning.
- Dispositivos de Internet de las cosas (IoT), como la Raspberry pi.
Bibliotecas populares de Python
- Para la ciencia de datos, Python cuenta con bibliotecas como Pandas, NumPy, SciPy y Matplotlib
- Para la inteligencia artificial, cuenta con bibliotecas como TensorFlow, PyTorch, Keras y Scikit-learn
- Para el procesamiento del lenguaje natural, cuenta con NLTK (Natural Language Toolkit)
Organizaciones que usan Python
Entre las muchas organizaciones que usan Python para sus proyectos, se encuentran IBM, Wikipedia, Google, CERN, NASA, Facebook, Amazon, Instagram, Spotify, y Reddit.
¿Por qué Python?
¿Por qué aprender Python y no otro lenguaje? Python es versatilidad, portabilidad, simplicidad y flexibilidad, y es uno de los lenguajes con mayor proyección de futuro. Está diseñado para ser simple, no está hecho para complicarnos la vida con código retorcido ni restricciones en el código que a la hora de la verdad no aportan valor. Nos parecerá estar leyendo/escribiendo prácticamente en idioma inglés.
Python es el lenguaje más utilizado en la ciencia de datos.
Por otra parte, Python también ofrece mucho más control de errores que C y, al ser un lenguaje de muy alto nivel, tiene incorporados tipos de datos de alto nivel, como arrays flexibles y diccionarios.
Todo ello hace de este el lenguaje de aprendizaje de referencia para cualquier programador que busque la mejor alternativa.
Pequeña comparativa con otros lenguajes
Según el índice TIOBE de agosto de 2024, Python es el lenguaje más popular del mundo, superando a otros lenguajes como Java y PHP. Por otra parte, estos últimos llevan muchos años asentados en el mercado, lo cual es en parte el motivo de que estén aun tan ampliamente extendidos y demandados. Java y PHP tienen aun una enorme comunidad y ofertas de trabajo suficientes para hacerlos lenguajes aun muy deseados.
Java sigue siendo, en el momento de escribir estas líneas, el lenguaje más demandado loaboralmente, con Python muy cerca en segundo lugar, y lejos ya de PHP, cuya popularidad ha caído en comparación con la de Python.
Sin embargo, la demanda de Python crece sin parar, y es previsible que pronto supere a Java.
PHP: La sintaxis de PHP es farragosa y poco elegante, requiere más lineas de código. Aunque ha evolucionado, PHP ha presentado importantes problemas de seguridad. El desarrollo es más lento, …
Java: Su éxito es debido en parte a que gigantes como Sun e IBM adoptaron e impulsaron el lenguaje.
Relacionado: Comparativa entre lenguajes de programación
Creador y origen del lenguaje
El creador de Python es el Holandés Guido Van Rossum, un hombre muy implicado en el software libre.
El origen del nombre Python es un homenaje al grupo de humoristas británicos Monty Python.
A finales del año 1980, Guido Van Rossum trabajaba en el equipo del sistema operativo Amoeba. Para resolver ciertas problemáticas relacionadas con las llamadas de ese sistema, en 1989 decide crear en su tiempo libre la primera versión del lenguaje Python.
Así, la primera versión pública de Python, la 0.9.0, sale a la luz en febrero de 1991.
Guido Van Rossum fue, además de creador, el máximo responsable del desarrollo y toma de decisiones acerca de Python hasta que, en julio de 2018, decidió abandonar su supervisión. Ahora Python es dirigido por un Consejo Directivo de cinco miembros elegidos por la comunidad de desarrolladores principales de Python, compuesto por miembros elegidos de los Python Core Developers.
No obstante, Python no es un jugador pequeño, y en torno suyo hay organizaciones encargadas de su promoción y mantenimiento, intereses corporativos y una gran comunidad de desarrolladores, donde cualquiera puede contribuir: reportar bugs, enviar una petición, escribir un parche, …
Python en la actualidad: organismos de liderazgo en la comunidad Python
- Python Software Foundation (PSF) es una organización sin fines de lucro que apoya el desarrollo y la promoción de Python en diferentes formas, como es la gestión de la propiedad intelectual del lenguaje Python.
- Python Core Developers son un grupo de desarrolladores con permisos para realizar cambios directos en el código fuente de Python. Ellos son responsables del mantenimiento, la revisión de código, la implementación de nuevas características, y la corrección de errores en Python.
Python 2 y Python 3
Actualmente se recomienda encarecidamente el uso Python 3.x, donde la x representa a cualquier subversión dentro de la versión 3.
Por otra parte, Python 2 pasó al estado de fin de vida útil en enero de 2020, lo que significa que ya no recibe más actualizaciones de seguridad ni soporte oficial. Por ello es importante migrar a Python 3, si aun se utiliza el 2 en algún proyecto.
Los modos de uso de Python
Existen dos formas de ejecutar código Python:
- Modo interactivo: Escritura de lineas de código en un intérprete. Se obtiene así la salida para cada linea, a medida que se escribe
- Modo scripting: Escritura del código en un archivo que posteriormente se ejecuta
Debe tenerse en cuenta que en el modo scripting una expresión en sí misma, tal como la asignación x = 5, no tiene un resultado visible en pantalla.
A medida que progresamos y escribimos más de unas pocas líneas, conviene empezar a guardar scripts, que son archivos de texto con la extensión .py.
La biblioteca estándar de Python
La biblioteca estándar de Python es un conjunto de módulos y paquetes que vienen incluidos con la instalación de Python, por lo cual no necesitan ser instalados aparte, y pueden ser utilizados de inmediato.
La biblioteca estándar proporciona herramientas para multitud de tareas.
Para comprender qué es una biblioteca estándar, podemos ver las herramientas que nos ofrece como «módulos preconstruidos», los cuales podríamos desarrollar desde cero, sin embargo estos ya vienen implementados y optimizados, y nos ahorran muchísimo tiempo.
La biblioteca estándar es uno de los puntos fuertes de Pyhton, y uno de los motivos por los que es tan popular este lenguaje.
Frameworks Python para el desarrollo web
Existen muchos frameworks Python poderosos para el desarrollo de aplicaciones web. Los dos más populares son Django y Flask. Cada uno tiene sus propios puntos fuertes pero, en breve, Django ofrece una solución completa y Flask otorga más flexibilidad.
Django
El famoso framework Django nos permite crear sitios absolutamente profesionales, usando Python como lenguaje Backend (en el lado servidor).
Incluye una gran cantidad de funcionalidades, como: Administración de bases de datos, autenticación de usuarios, enrutamiento de URLs, …
- ORM (Object-Relational Mapping): Permite interactuar con bases de datos utilizando código Python en lugar de SQL.
- Sistema de plantillas: Facilita la creación de interfaces web dinámicas.
- Seguridad: Incluye protección contra ataques comunes como XSS, CSRF, y SQL injection.
- Escalabilidad: Es adecuado tanto para proyectos pequeños como grandes aplicaciones web complejas.
Flask
Flask es el otro gran popular framework Python para el desarrollo web. Se trata de un framework más minimalista, con menos funcionalidades incorporadas, pero en el que muchos desarrolladores encuentran la oportunidad de personalizar en mayor medida que Django, al elegir ellos mismos las herramientas que necesitan.
Características:
- Ligero y modular: Puedes agregar solo los componentes que necesitas.
- Simplicidad: Ideal para proyectos más pequeños o para desarrolladores que prefieren construir desde cero.
- Extensible: Puedes integrar fácilmente extensiones para ORM, autenticación, etc.
- Jinja2: Utiliza el motor de plantillas Jinja2, que es potente y fácil de usar.
FastAPI
FastAPI es un framework libre bajo licencia MIT, relativamente reciente, que ha ganado popularidad por su rendimiento y simplicidad para construir APIs rápidas y eficientes.
Este framework puede ser relevante para desarrolladores que trabajan con microservicios o necesitan un rendimiento alto.
Lenguaje e intérprete Python
Cuando hablamos de Python, el término implica dos conceptos:
- El lenguaje Python. Es el «lenguaje» en sí mismo: semántica, sintaxis, …
- El intérprete Python. Es una aplicación de software que entiende e interpreta este lenguaje.
Existen varios intérpretes Python. Por ello cuando «instalamos Python», lo que realmente instalamos es una de sus implementaciones.
Implementaciones Python
A continuación se exponen algunas de las implementaciones de Python más populares.
- CPython es el intérprete clásico, estándar de Python. Está escrito en C, y viene preinstalado en las distribuciones Linux y en los MAC.
- PyPy es una implementación alternativa de Python.
- El compilador Just-in-Time (JIT) es una de las características más destacadas de PyPy. Un JIT es un compilador en tiempo de ejecución. Así funciona: el compilador JIT traduce el código Python a un código máquina altamente optimizado durante la ejecución, lo que puede acelerar significativamente la ejecución de programas. PyPy es compatible con la mayoría del ecosistema Python, lo que significa que podemos ejecutar la mayoría de los programas escritos para CPython sin modificaciones.
- RPython (Restricted Python) es un subconjunto de Python que se utiliza como lenguaje de implementación dentro del proyecto PyPy. El código escrito en RPython puede ser compilado de manera estática a diferentes plataformas, generando código altamente eficiente en lenguajes como C o ensamblador.
- MicroPython, Es una implementación de Python diseñada para microcontroladores, sistemas embebidos y, en general, dispositivos con recursos limitados (poca memoria y potencia de procesamiento). MicroPython y CircuitPython, una variante de la primera, son ampliamente utilizadas en proyectos de Internet de las cosas (IoT)).
- Brython, Una implementación de Python 3 que se ejecuta en el navegador web, traduciendo Python a JavaScript en tiempo real. El objetivo es escribir Python en el frontend, en vez de Javascript.
- IronPython, implementación del intérprete Python escrita totalmente en C#, sobre la plataforma .NET de Microsoft. El proyecto respeta por completo la sintaxis del Python origial (CPython). Por ello, cualquier programa escrito en Python puede ser interpretado con IronPython, el cual además permite al desarrollador usar las bibliotecas de la plataforma .NET, y compilar del código a bytecode
Implementaciones obsoletas o de uso limitado
Se mencionan algunas implementaciones obsoletas o bien de uso menor, incluidas solo con propósito informativo.
- Jython: Intérprete de Python construido sobre la máquina virtual Java. Jython no es compatible con Python 3, lo que lo hace en gran medida obsoleto. Permite que Java y Python se integren, lo que significa que podemos utilizar bibliotecas y clases de Java directamente desde el código Python y viceversa.
- Stackless Python: Rama de CPython que soporta Microthreads. No está completamente obsoleto, pero su uso está bastante limitado a nichos específicos, como en la industria de los videojuegos (por ejemplo, en el motor EVE Online)
Uso del intérprete Python
[docs.python.org#interprete] El intérprete de Python en los sistemas tipo Unix se encuentra habitualmente en:
/usr/bin/python3
o bien en
/usr/local/bin/python3/
Averiguamos donde se encuentra con la orden:
$ which python3
Arrancar/invocar el intérprete
Podemos arrancar el intérprete Python en el terminal de comandos Linux mediante el comando:
$ python3
Python 3.11.5 (main, Sep 11 2023, 13:54:46) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
Una vez dentro del intérprete, podemos escribir órdenes Pyton, como en cualquier otro intérprete.
Salimos del intérprete con la combinación end-of-file (Ctrl-D en sistemas Unix), o bien el comando quit()
El intérprete opera de forma parecida al shell Unix. Cuando se le llama con la entrada estándar conectado a un terminal, lee y ejecuta comandos interactuando con el usuario.
Por otra parte, cuando se le llama con el nombre de un fichero como argumento o como entrada estándar, lee y ejecuta el script de este fichero. En otras palabras, el intérprete recibe un archivo de script (un archivo de texto con comandos escritos en él) o un flujo de entrada que contiene los comandos, y los ejecuta de manera secuencial.
Una segunda forma de arrancar el intérprete es python -c comando [arg] …, lo cual ejecuta las sentencias en ‘comando’. A causa de espacios y caracteres especiales, es usual encerrar ‘comando’ entre comillas simples.
Algunos módulos Python son también útiles como scripts. Estos pueden invocarse usando python -m modulo [arg] …, lo cual ejecuta el archivo fuente para módulo como si hubiéramos deletreado su nombre en la linea de comandos.
Cuando se usa un archivo script, es a veces útil poder ejecutar el script y entrar en el modo interactivo después, para lo cual pasamos el parámetro -i antes del script.
Todas las opciones de linea de comandos se describen en Línea de comandos y entorno, de la doc. oficial Python.
Distribución de software Python
PyPI (Python Package Index)
Gracias a PyPI, cualquiera puede publicar su propio código en un lugar centralizado, accesible para toda la comunidad Python. Esto promueve la reutilización de código, con el consiguiente beneficio para la comunidad.
PyPI simplifica tanto la distribución de software como la instalación y actualización de bibliotecas en proyectos Python.
Distribuir nuestras propias aplicaciones con setuptools
Podemos distribuir nuestras propias aplicaciones en Pyton, utilizando la poderosa herramienta setuptools. Esta nos permite automatizar toda la fase de preparación y distribución de un proyecto Python.
Con setuptools, podemos definir las dependencias de nuestra aplicación, crear distribuciones binarias, y empaquetar nuestro proyecto para su instalación en otros entornos.
Podemos subir nuestros paquetes a repositorios como PyPI (Python Package Index), lo que permite que otros desarrolladores los descarguen y utilicen.
Nota: La herramienta distutils está obsoleta hoy en día y se recomienda evitarla, habiendo sido reemplazada por setuptools, estándar hoy e día.
Referencias y recursos de interés para el aprendizaje de Python
Documentación oficial Python
🌐 [docs.python.org#interprete] Usando el intérprete de Python
🌐 [docs.python.org#biblioteca-estandar] La biblioteca estándar de Python. Descripción de los módulos y objetos de la biblioteca estándar.
🌐 [docs.python.org#tutorial] El tutorial Python del sitio oficial. Tal como describe el propio documento: «Es un tutorial, así que no trata de ser Python exhaustivo ni cubrir todas las características Python, sino de enseñar. Una vez terminado, se está preparado para leer y escribir módulos y programas Python, y aprender más sobre los módulos de la biblioteca estándar
🌐 Escribir módulos en C o C++ para extender el intérprete de Python y el Manual de referencia de la API en C de Python. El primero describe cómo escribir módulos en C o C++ para extender el intérprete de Python con nuevos módulos. El segundo manual documenta la API utilizada por los programadores de C y C ++ para escribir estos módulos de extensión.
🌐 [docs.python.org#manual-referencia] Manual de referencia del lenguaje Python. Describe la sintaxis y semántica básica de Python. Mientras que el tutorial nos sirve para aprender, el manual nos sirve como documento exhaustivo de consulta
🌐 [docs.python.org#funciones-incorporadas] Funciones incorporadas/internas de Python. Un listado detallado con las funciones internas de Python.
PEP 8
🌐 PEP 8 – Style Guide for Python Code. Un documento imprescindible para un desarrollador Python. Presenta el estilo y las buenas prácticas que deben seguirse al escribir código Python. Ver en la el sitio peps.python.org otros documentos PEP, como el PEP 7, para la redacción de código C de Python.
Otros recursos gratuitos de aprendizaje
🌐 [fullstackpython.com] Full Stack Python. Múltiples recursos: ebooks, cursos gratuitos o de pago, boletines de noticias, entornos de desarrollo para Python, desarrollo web app, ejercicios, desafíos, … y más
🌐 [developer.mozilla.org#django] Framework Web Django (Python). Aprenda el framework web más popular de Python, Django, con la MDN (Mozilla Delveloper Network)
🌐 [learnpython.org] learnpython.org, otro recurso gratuito
🌐 [github.com#pytudes] Pytudes. Programas de Python para perfeccionar las habilidades de programación.
Recursos de pago
🌐 [coursera.org] Coursera. Siempre contiene cursos, de buena calidad, impulsados por universidades de prestigio, sobre Python y muchísimas disciplinas más. Solo debemos usar el buscador de cursos para ver lo que hay en este momento.
🌐 [learnpythonthehardway.org] learnpythonthehardway.org, formación de pago a precio muy razonable. Ibncluye PDFs, vídeos libres de DRM, y soporte técnico vía tickets.
Otros artículos de interés
🌐 Setting Up a Python Development Environment with and without Docker, explica el razonamiento detrás de por qué y cuándo usar varias herramientas en nuestro entorno local.
Administración de paquetes con PIP
[docs.python.org] [docs.python.org#pip] pip es una herramienta poderosa para gestión de paquetes y bibliotecas en entornos Python. Con él podremos instalar, actualizar y eliminar paquetes.
Instalación de paquetes. Por defecto pip instalará paquetes desde el Python Package Index, que es el repositorio oficial de software de Python.
pip install nombre_del_paquete
El anterior comando instalará el paquete nombre_del_paquete
desde PyPI, junto con cualquier dependencia que el paquete requiera
Actualización de paquetes. Con otro comando igualmente sencillo, actualizamos paquetes:
pip install --upgrade nombre_del_paquete
Eliminación de Paquetes.
pip uninstall nombre-del-paquete
Listado de paquetes instalados. Veamos un listado de los paquetes instalados en nuestro entorno:
pip list
Instalación del entorno de desarrollo básico Python en UNIX/Linux
Muchas distribuciones Linux vienen ya con Python pre-instalado. Si no lo está, o bien no está la última versión instalada, la forma más fácil de instalar python3 es usando el terminal de comandos, con el comando adecuado dependiendo del gestor de paquetes de cada distribución. Para algunas de las más populares:
apt-get install python3 # Debian/Ubuntu y derivadas
sudo dnf install python3 # Fedora
sudo yum install python3 # CentOS/RHEL
sudo dnf install python3 # Versiones más nuevas de CentOS/RHEL
sudo pacman -S python # Arch Linux y derivadas
sudo zypper install python3 # openSUSE
Cada uno de estos comandos instalará la versión más reciente de Python 3, disponible en los repositorios de cada distribución.
Es también posible descargar la versión compilada desde la web oficial de descarga de Python.
El comando which python me devuelve la ruta hasta el directorio de instalación Python. Sin embargo, el resultado es diferente según sea:
$ which python
/usr/bin/python<br>
$ which python3<br>
/usr/bin/python3
…debido a que las 2 versiones están instaladas. Por tanto, observar en adelante esta situación para llamar a la versión correcta.
Creación de entornos virtuales Python con venv
¿Qué es un entorno virtual?
Los entornos virtuales de Python son una solución para para la gestión de las dependencias y el aislamiento de proyectos.
Son entornos aislados en los que se pueden instalar dependencias específicas para un proyecto sin afectar el entorno global de Python instalado en el sistema. Cualquier biblioteca instalada dentro de un entorno solo afectará a este.
El cometido de los entornos virtuales puede ser crucial cuando se trabaja en múltiples proyectos.
Puede que al trabajar en un determinado proyecto, necesitemos instalar una biblioteca o versión concreta, que solo sirve para ese proyecto y por tanto no queremos alterar nuestro entorno Python.
Un ejemplo: Una primera aplicación A requiere de la versión 1.0 de un módulo en particular, pero la aplicación B necesita la versión 2.0. Entonces tenemos un conflicto y tanto instalando la 1.0 o la 2.0, una de las dos aplicaciones quedará inservible. Es en este tipo de escenarios cuando crear un entorno de trabajo virtual se vuelve esencial.
Cada lenguaje gestiona sus propios entornos virtuales
Los entornos virtuales creados con la herramienta venv son exclusivos de Python, diseñados específicamente para este lenguaje.
Sin embargo, cada lenguaje tiene sus propios mecanismos de aislamiento:
- Node.js usa npm
- Ruby tiene herramientas como rbenv o Bundler
virtualenv y venv
Aunque las herramientas virtualenv y venv son similares y sirven para crear entornos virtuales en Python, venv es la herramienta preferida en entornos Python 3.x, es más actual y es parte de la biblioteca estándar de Python.
En contrapartida, virtualenv y derivados como virtualenvwrapper están prácticamente en desuso.
Algunos comandos básicos de venv
Crear un entorno virtual
Para crear el entorno virtual con venv, decidimos el directorio sobre el cual queremos ubicarlos, y ejecutamos en terminal:
python -m venv /ruta_al_entorno_virtual/directorio-venv
Lo anterior crea el directorio directorio-venv si no existe, y crea directorios dentro de este que contienen una copia del intérprete Python, la biblioteca estándar, y varios archivos de soporte.
Activar el entorno virtual creado
En Linux/MacOS, entrar o activar un entorno virtual (script escrito para la consola bash):
source ruta_al_entorno_virtual/bin/activate
Entonces ‘which python3’ me devuelve la ruta hasta el directorio del entorno:
$ which python3
/ruta.../bin/python3
Y el siguiente comando me indica la versión de python3, dentro del entorno:
python3 --version
Salir del entorno virtual
Para salir del entorno virtual, insertamos el comando:
deactivate # Conda deactivate, si se trata de un entorno creado con Anaconda
Observe: Una vez fuera, la ruta al ejecutar which python3
y la versión al ejecutar python3 --version
son probablemente diferentes, dado que ahora nos encontramos fuera de cualquier entorno virtual, y vemos la versión Python de la instalación del sistema.
Referencias
[docs.python.org] venv – Creación de entornos virtuales
[packaging.python.org] Install packages in a virtual environment using pip and venv
Relacionado
Distribución Anaconda Python/R · introducción
Instalación y primeros pasos con Anaconda, el IDE libre más popular para Python. Jupyter Notebook, Instalación de Tensor Flow y Keras, …
Continue Reading Distribución Anaconda Python/R · introducción
Deja una respuesta