Programación con
Python
Entornos de trabajo para
Python
Quedan rigurosamente prohibidas, sin la autorización escrita de los
titulares del Copyright, bajo las sanciones establecidas en las leyes,
la reproducción total o parcial de esta obra por cualquier medio
o procedimiento, comprendidos la reprografía y el tratamiento
informático, y la distribución de ejemplares de ella mediante
alquiler o préstamo públicos. Diríjase a CEDRO (Centro Español de
Derechos Reprográficos, [Link]) si necesita fotocopiar o
escanear algún fragmento de esta obra.
INICIATIVA Y COORDINACIÓN
DEUSTO FORMACIÓN
COLABORADORES
Realización:
E-Mafe E-Learning Solutions S.L.
Elaboración de contenidos:
Claudio García Martorell
Licenciado IT Telecomunicaciones especialidad Telemática
Postgrado en Sistemas de Comunicación y Certificación en Business Intelligence TargIT University.
Concejal de Innovación y Tecnología.
Ponente y docente en distintas universidades y eventos.
Josep Estarlich Pau
Técnico de Ingeniería Informática.
Director Área de Software de la empresa Dismuntel.
Participante en proyectos con Python, C#, R y PHP orientados a Machine Learning y a la Inteligencia Artificial.
Supervisión técnica y pedagógica:
Grufium educación y excelencia
Coordinación editorial:
Grufium educación y excelencia
© Grufium educación y excelencia, S.L.
Barcelona (España), 2021
Primera edición: septiembre 2021
ISBN: 978-84-1300-688-8 (Obra completa)
ISBN: 978-84-1300-690-1 (Entornos de trabajo para Python)
Depósito Legal: B 11038-2021
Impreso por:
SERVINFORM
Avenida de los Premios Nobel, 37
Polígono Casablanca
28850 Torrejón de Ardoz (Madrid)
Printed in Spain
Impreso en España
Esquema de contenido
1. IDE, frameworks y editores en Python: diferencias y áreas específicas de trabajo
1.1. ¿Qué es un IDE?
1.2. ¿Qué es un framework?
1.3. ¿Qué es un editor de texto?
2. IDE: Atom IDE, IDLE, PyDev (Eclipse), Spyder IDE
2.1. Atom IDE
2.2. IDLE
2.3. PyDev
2.4. Spyder IDE
3. Frameworks (Django, Spark, Pytorch, Flask)
3.1. Django
3.2. Spark
3.3. Pytorch
3.4. Flask
4. Editores (Vim, Emacs, Sublime Text, Notepad ++)
4.1. Vim
4.2. Emacs
4.3. Sublime Text
4.4. Notepad ++
Introducción
En este módulo continuaremos introduciendo las principales herramien-
tas que hay que tener en cuenta para empezar a desarrollar con Python
y decidir cuáles de ellas nos aportan valor, es decir, reducen el tiempo de
producción de código fuente, validan la sintaxis durante el desarrollo o
nos permiten ejecutar directamente el código.
Conoceremos las diferencias que existen entre los IDE, los frameworks
y los editores de Python para poder ajustar y optimizar al máximo el
entorno en función de la necesidad del proyecto que hay que desa-
rrollar, o de la facilidad para gestionar proyectos grandes o pequeños.
Entraremos en contacto con varios softwares de código abierto, ex-
plicaremos sus ventajas y desventajas, y concretaremos la utilidad de
cada uno de ellos, ya que la decisión para elegir el programa de trabajo
es muy importante: pasaremos mucho tiempo trabajando con él, por
lo que es fundamental que nos guste y nos resulte cómodo.
También aprenderemos a configurar nuestros entornos de programa-
ción para que la tarea inicial en el desarrollo de proyectos nos sea más
fácil y podamos acceder de manera sencilla y rápida a todos los objetos
generados y a las funciones del propio proyecto.
Hay que tener claro con qué tipo de software vamos a lanzarnos a
programar en Python, por lo que vamos a diferenciar entre las herra-
mientas disponibles separadas en tres grandes grupos: IDE, frameworks
y editores de texto. Si bien cada tipo de software tiene sus ventajas y
desventajas, lo cierto es que la elección de uno u otro dependerá de la
naturaleza, el objetivo y las especificaciones de nuestro proyecto.
Introducción 5
1. IDE, frameworks y editores en
Python: diferencias y áreas
específicas de trabajo
Una vez que nos centramos en la programación de alto nivel, se nos plan-
tean varias dudas para la gestión de nuestros proyectos de desarrollo;
por ello vamos a analizar algunas cuestiones importantes que nos van a
ayudar a determinar cuáles son las herramientas que debemos elegir en
función de la finalidad o el alcance de nuestro proyecto.
1.1. ¿Qué es un IDE?
+
Las siglas IDE corresponden a Integrated Development Environment, que,
traducido al español, significa “entorno de desarrollo integrado”. Es un Para saber más
software que nos proporciona servicios aplicados a la programación para IntelliSense es la función
facilitar el día a día del programador, la gestión del código y la labor de integrada en Microsoft
recopilar y validar un desarrollo. Visual Studio para
autocompletar funciones,
La parte principal de un IDE es un editor de código fuente que incluye métodos o nombres de
herramientas automáticas para el desarrollo y nos facilita la comproba- objetos. No es su única
ción del código con un depurador. En la actualidad, muchos de los IDE del función, porque también
mercado ya incluyen una pequeña inteligencia que facilita la programa- nos da respaldo como
ción autocompletando el código de una manera inteligente; un ejemplo documentación de dichas
de ello es IntelliSense (Figura 1.1). funciones.
Figura 1.1
Editor de código fuente
Intellisense de Microsoft Visual
Studio.
IDE, frameworks y editores en Python: diferencias y áreas específicas de trabajo 7
A menudo no es posible definir la línea de separación entre un IDE y las
partes adicionales del entorno de desarrollo, que nos permiten reducir
el tiempo requerido para el desarrollo de la interfaz gráfica de usuario
(GUI), ya que incluyen un control de versiones de modificaciones y he-
rramientas de navegación de clases, diagramas de jerarquías de estas o
buscadores de objetos para una programación orientada a objetos. Todo
ello nos permite el manejo de una gran cantidad de archivos e incluso de
varios proyectos.
Es muy importante tener clara la diferencia entre clase y objeto (Figura
1.2).
Figura 1.2
Diferencia entre clase y objeto.
Podemos afirmar que un IDE es un software con el que vamos a desarro-
llar y generar nuestras aplicaciones, con un gran abanico de facilidades y
ventajas.
1.1.1. Origen de los IDE
Para saber un poco más en profundidad de dónde viene la necesidad de
los IDE, vamos a ver cuándo apareció este tipo de software.
En los primeros sistemas informáticos era completamente inviable la eje-
cución de programas IDE, ya que el hardware no podía soportar la carga
de trabajo que suponían las comprobaciones y modificaciones en tiempo
real. Además, el software disponible en aquella época no contaba con la
orientación a objetos ni con la filosofía de capas necesarias en este tipo
de programas.
Los programas se preparaban con diagramas de flujo, utilizando tarjetas
perforadas, y posteriormente se validaban con el compilador. Era una la-
bor muy costosa; no solo mentalmente, ya que había que coordinar todas
y cada una de las posibles respuestas o errores que pudieran derivarse de
Certificación ellas, sino también físicamente, puesto que cualquier error de configura-
Es importante interiorizar ción en las entradas (no hablemos ya de la lógica del programa mismo)
los IDE, pues en numerosas podía dar al traste con todo el proceso y obligar a repetirlo desde el inicio.
preguntas de la certificación Esto creó la necesidad de tener que validar un código fuente antes de ser
se hace referencia a estos. ejecutado por un hardware.
8 Entornos de trabajo para Python
Los IDE solo pudieron utilizarse cuando se empezó a desarrollar en modo
terminal o consola y las capacidades del hardware de los ordenadores
personales lo permitió. +
1.1.2. Características, componentes y ejemplos de IDE Para saber más
Uno de los primeros
Algunos IDE pueden utilizar o soportar varios lenguajes, por lo que son lenguajes creado con un
llamados multilenguaje. La mayoría requieren la instalación de un plugin IDE fue Dartmouth BASIC.
en el IDE; por ejemplo, Eclipse y Netbeans disponen de plugins para varios El primer IDE utilizado fue
lenguajes (C/C++, Ada, Perl, Python, Ruby y PHP), y pueden ser configura- Maestro I, creado en 1975
dos y gestionados desde el mismo IDE. y utilizado por 22.000
programadores, y fue líder
Para la programación de la GUI o interfaz visual, los IDE visuales son esen- entre los años 1970-1980.
ciales, ya que facilitan su creación y luego incluso pasan a ser compilados
o interpretados, y facilitan el aprendizaje del lenguaje de una forma más
visual e interactiva. Los siguientes son requisitos que necesitaremos que
los IDE cumplan:
• Deben permitirnos utilizar el lenguaje de forma interactiva.
• Deben ser multiplataforma, ya que de este modo nos facilitarán el
cambio de máquina o de sistema operativo.
• Deben ser multilenguaje, ya que, si nos familiarizamos con un IDE y
podemos aprovecharlo en más de un lenguaje, tendremos trabajo ade-
lantado: no solo seremos más rápidos, sino también más eficientes a la
hora de programar.
• Deben tener control de versiones. Los proyectos de programación es-
tán siempre en proceso de mejora y, por tanto, es importante llevar un
buen control de las distintas versiones y modificaciones que hemos
ido realizando. Muchas veces nos veremos en la necesidad de recurrir
a un código anterior porque hemos creado una función que provoca
errores en todo el software, y volver a un código antiguo funcional
nos puede facilitar el trabajo; si nuestro IDE nos permite un enlace
directo con un sistema de control de versiones, este trabajo nos será
más sencillo.
• Deben validar o reconocer la sintaxis.
• Deben disponer de plugins para el IDE.
• Deben poder importar y exportar.
IDE, frameworks y editores en Python: diferencias y áreas específicas de trabajo 9
• Deben estar en nuestro idioma nativo.
• Deben contar con manuales o foros. Hay que tener presente que, si
un IDE cuenta con una gran comunidad, no solo nos da seguridad el
hecho de familiarizarnos con él, sino que además podremos encontrar
fácilmente una solución si nos surge una duda o un problema.
Los IDE incluyen los siguientes componentes:
• Editor de texto
• Compilador
• Analizador de sintaxis
• Intérprete
• Depurador
• Gestor de interfaz gráfica
Ejemplos de IDE:
1.2. ¿Qué es un framework?
En el campo en el que nos encontramos, podríamos definir un framework
como un entorno de trabajo en el cual agrupamos conceptos y criterios
estandarizados para dar soluciones a problemas repetitivos, y que nos
ayuda con herramientas ya desarrolladas.
Los frameworks nos van a obligar a trabajar de una forma determinada;
Certificación por ello, son herramientas ideales para trabajar en equipo, ya que todos
Es importante interiorizar utilizaremos el mismo patrón de programación y será mucho más com-
los frameworks, pues en prensible para todos los miembros del equipo.
numerosas preguntas de
la certificación se hace Pueden soportar la integración de plugins, bibliotecas y lenguajes inter-
referencia a estos. pretados; de este modo, se unen todos los componentes de un proyecto
10 Entornos de trabajo para Python
de desarrollo. Los frameworks nos dan una base para iniciar el desarrollo
y ofrecen, entre otros, los siguientes beneficios:
• Existen muchos tipos de frameworks, que nos pueden dar solucio-
nes de desarrollo web, gestión de bases de datos, big data, machine
learning, etc.
• Evitan la reescritura de código fuente, pues casi todo el software desa-
rrollado incluye validación de formularios o acceso a bases de datos. El
framework nos evita la programación de algunas partes del proyecto,
lo que reduce el tiempo de ejecución del desarrollo y permite al desa-
rrollador centrarse en el software que está en progreso.
• Cuentan con funciones muy optimizadas en tiempo de ejecución, es
decir, que están muy preparadas para poder funcionar con hardwares
de muy pocas prestaciones.
1.2.1. ¿Qué debemos analizar antes de utilizar un framework?
Debemos hacer un pequeño análisis previo al desarrollo y definir las ca-
racterísticas y necesidades del proyecto, y evaluar si con un framework
tenemos suficiente; y, lo más importante, elegir bien con cuál queremos
desarrollar el proyecto, ya que el hecho de elegir uno más complejo hará
que nuestro software sea más pesado y complicará el desarrollo. Tampoco
debemos limitarnos a reutilizar el mismo que hayamos usado en anterio-
res proyectos, ya que es probable que no siempre sea la decisión correcta.
También se ha de tener en cuenta la curva de aprendizaje que tiene el
framework, ya que el tiempo que vamos a invertir en familiarizarnos con
él debe ser siempre proporcional a la necesidad del desarrollo. Además,
debemos asegurarnos de que dispone de versiones estables y soporte.
Vamos a elaborar un listado sin orden específico de criterios que hay que
tener en cuenta para la correcta elección de nuestro framework.
• Disponibilidad para entorno web, big data y machine learning: hay que
tener siempre presente que va a realizar el proyecto final.
• Comunidad robusta en Internet y soporte en foros.
• Documentación.
• Claridad y potencia.
IDE, frameworks y editores en Python: diferencias y áreas específicas de trabajo 11
• Arquitectura MVC.
• Seguridad.
+ • Acceso a bases de datos.
Para saber más • Reutilización.
La librería, al contrario que
el framework, no define la La arquitectura Modelo Vista Controlador (MVC) es un patrón de arquitec-
estructura del desarrollo, tura de programación basado en la separación de los datos: por un lado,
sino que nos proporciona la lógica de negocio; por otro, el módulo para la gestión de eventos o
funciones realizadas comunicaciones y su presentación o visualización. Sin profundizar excesi-
y probadas por otros vamente, podemos decir que es una base que separa en tres apartados la
programadores. programación de nuestro proyecto (Figura 1.3):
• Modelo (M): dentro de este apartado, manejamos las operaciones ló-
gicas del proyecto; el modelo debe ser reutilizable.
• Vista (V): en este segundo apartado tenemos la parte GUI, la que vi-
sualiza el usuario.
• Controlador (C): en este tercer apartado está todo el acceso de nues-
tro proyecto, y realiza las peticiones sobre el modelo; debe manejar
archivos, clases, métodos y funciones.
Figura 1.3
Esquema del Modelo Vista
Controlador (MVC)
Ejemplos de frameworks:
Django Flask Pyramid
Bottle TensorFlow PyTorc
12 Entornos de trabajo para Python
1.3. ¿Qué es un editor de texto?
Un editor de texto es un software que nos permite crear y modificar fi-
cheros con texto sin formato. Algunos de ellos van incluidos por defecto
en el sistema operativo; otros no están preparados para programar, pero
aun así nos permiten visualizar el contenido de los ficheros deseados.
Los editores de texto pueden incorporar funcionalidades implementa-
das o permitir el añadido de plugins para colorear las palabras especí-
ficas de un lenguaje en concreto. Existen incluso editores de texto con
funcionalidades más potentes de comparación de archivos o codifica-
ción de ficheros.
Los programadores tendemos a ser muy exigentes; por ello, si optamos
por un desarrollo con editores de texto, deberemos tener en cuenta la
posibilidad de leer archivos de gran extensión y también que su arran-
que se realice rápidamente, ya que el tiempo de espera reduce nuestra
productividad, puede repercutir de forma negativa en el tiempo de de-
sarrollo y nos lleva a atender cuestiones que no aportan valor al código,
como puede ser el hecho de esperar a que un fichero se cargue.
Por otro lado, los editores de texto facilitan el trabajo sobre todo para la
generación de script, ya que no necesitamos grandes funcionalidades ni
relaciones con ficheros de un proyecto grande.
Funciones especiales:
• Detección de inicio de funciones o bloques de código; los editores
nos permiten plegar o esconder el código que actualmente no sea
relevante.
• Autocompletado de palabras.
• Coloreado de palabras clave de varios lenguajes, configurables por
la extensión del fichero. A estos editores se les llama comúnmente
highlighters; suelen ser muy rápidos y su única funcionalidad es la de
resaltar las palabras clave.
Certificación
Pero ¿cómo podemos diferenciar un editor de texto de un IDE? Es importante interiorizar
el editor de texto, pues
• Una diferencia importante entre el editor de texto y el IDE es que el en numerosas preguntas
primero está orientado a ficheros sueltos y el segundo para proyectos de la certificación se hace
enteros (puede navegar por las funciones entre varios ficheros de una referencia a este.
IDE, frameworks y editores en Python: diferencias y áreas específicas de trabajo 13
forma muy cómoda, lo que hace que el IDE sea más rápido en la ges-
tión de este tipo de proyectos).
• Un IDE siempre incluye un editor de texto, así como otras herramien-
tas de desarrollo como intérpretes, repositorios, compiladores, etc.
Para iniciarse en la programación recomendamos utilizar un IDE, ya que
podremos ejecutar, depurar y validar nuestro código desde el mismo soft-
Ejercicios ware; es decir, tendremos muchas más funcionalidades que nos ayudarán
resueltos a programar de forma correcta y nos avisarán de los posibles errores de
Practica el ejercicio 1 con los sintaxis. No dispondremos de esa función en un editor de texto, y, debido
conocimientos adquiridos precisamente a esa característica, esta opción se reserva para programa-
hasta esta unidad. dores más expertos.
14 Entornos de trabajo para Python
Resumen
• Un IDE es una herramienta que nos ayuda a gestionar un proyecto de
software de manera global, proporciona servicios aplicados a la pro-
gramación para facilitar la gestión de código y hacer más sencilla la
labor de recopilar y validar un desarrollo.
• Un framework es un entorno de trabajo en el cual se agrupan con-
ceptos y criterios estandarizados para dar solución a problemas repe-
titivos, lo que nos evita volver a escribir trozos de código ya usados.
Favorece la reutilización y la creación de pautas de programación.
• Un editor de texto solo sirve para escribir código e incorporar resalta-
dores de lenguaje o highlighters, lo que favorece la comprensión visual
de código. Sin embargo, no gestiona proyectos, ni controla versiones,
ni compila.
• Los editores se usan para la revisión o generación de ficheros aislados.
Para tareas de mayor complejidad, como un proyecto, se usa un IDE o
un framework. Cuanto más exigentes sean los requisitos del proyecto,
más justificado estará usar un framework, ya que estos son más “te-
máticos” (machine learning, data management, desarrollo web, etc.).
IDE, frameworks y editores en Python: diferencias y áreas específicas de trabajo 15
2. IDE: Atom IDE, IDLE, PyDev
(Eclipse), Spyder IDE
En esta unidad se han seleccionado varios IDE de código abierto; podre-
mos ver una pequeña muestra de cada uno de los elegidos y realizaremos
su primera configuración básica para poder utilizarlos con Python 3.
2.1. Atom IDE
Atom IDE es una evolución del editor de texto Atom. Esto significa que
se añaden al editor las herramientas necesarias para ser un IDE; es
decir, que podrá compilar, interpretar, procesar y ejecutar código que
desarrollemos en el editor, pero de momento estará solo disponible
para algunos lenguajes.
En primer lugar, debemos instalar Atom, el editor de texto; está dispo-
nible para Windows, Linux o Mac en [Link]
Para que Atom se convierta en IDE, debemos realizar una serie de con-
figuraciones e instalar varios paquetes que nos permitirán trabajar más
cómodamente y ser más productivos en Python (Figura 2.1).
Figura 2.1
Interfaz gráfica del programa
ATOM.
16 Entornos de trabajo para Python
Como en la mayoría de las aplicaciones de desarrollo, los programas
de instalación, una vez que se han iniciado, nos muestran mensajes de
bienvenida con ayudas. Si no queremos que sigan apareciendo, en
la página “Welcome” podemos desactivar la opción “Show Welcome
Guide when opening Atom”. Además, en la página “Telemetry Con-
sent” seleccionaremos la opción “Yes, send my usage data”, ya que es
recomendable colaborar enviando de forma anónima posibles errores
que se produzcan durante la ejecución de Atom.
Una vez que hayamos configurado todo esto, cuando volvamos a eje-
cutar Atom se nos abrirá una hoja en blanco para empezar a desarro-
llar nuestro ingenio escribiendo código (Figura 2.2).
Figura 2.2
Pantalla inicial de ayuda del
programa ATOM.
Para poder empezar a ejecutar código, debemos instalar un paquete
llamado Script. Para ello debemos ir al menú, seleccionar “File”, y, en el
desplegable, hacer clic en “Settings”. Se nos abrirá una zona nueva lla-
mada “Settings”; en el nuevo menú, pulsaremos “Install” (Figura 2.3).
IDE: Atom IDE, IDLE, PyDev (Eclipse), Spyder IDE 17
Figura 2.3 En el buscador, escribiremos “script” y haremos clic en “Install”.
Menú e interfaz gráfica para
acceder al instalador de Una vez instalado, aparecerá la casilla del paquete Script, en la cual po-
paquetes. dremos configurarlo, desinstalarlo o deshabilitarlo (Figuras 2.4 y 2.5).
Figura 2.4
Visualización de que “Script” se
ha instalado correctamente.
18 Entornos de trabajo para Python
Figura 2.5
Búsqueda del paquete “Script”
en la interfaz.
Aunque este paquete no es específico para Python y nos va a permitir
ejecutar varios lenguajes de programación, en este curso nos vamos a
centrar en las ventajas que nos da sobre Python.
Vamos a probar a ejecutar código en Python para ver que funciona co-
rrectamente. Escribimos un programa en nuestro editor de texto con-
vertido a IDE. Para ejecutar el código bastará simplemente con teclear
lo siguiente (Figuras 2.6 y 2.7):
Figura 2.6
Atajos de teclado para
Windows o Mac.
IDE: Atom IDE, IDLE, PyDev (Eclipse), Spyder IDE 19
Figura 2.7
Código fuente de bienvenida
en la interfaz ATOM.
Continuando con la preparación de nuestro entorno, podemos confi-
gurar varios temas diferentes o la fuente en la que se mostrará nuestro
código (instalando un paquete de fuentes), configuraciones básicas
como “ccroll”, para desplazarse aunque el código haya terminado y el
uso de guías para el sangrado; podremos definir incluso cuántos espa-
cios queremos que tabule al pulsar la tecla del Tabulador. Obviamente,
la configuración de un entorno es algo muy personal y con lo que cada
programador tiene que estar cómodo y sentirse lo más confortable po-
sible; no vamos a explicar todas estas funcionalidades en el curso dado
que dependen en gran medida de los gustos personales.
El punto que sí vamos a explicar es el autocompletado de sintaxis para
Python; es uno de los más importantes, ya que nos va a facilitar el tra-
bajo de programación.
Abrimos la zona “Settings” y, en el apartado “Install”, escribimos “auto-
complete-python” y hacemos clic en “Install” (Figuras 2.8 y 2.9).
Figura 2.8
Paquete
“autocomplete-python”,
en el buscador de ATOM.
20 Entornos de trabajo para Python
Figura 2.9
Paquete
“autocomplete-python”
instalado correctamente.
Por otro lado, si vamos a utilizar Atom para varios lenguajes, reco-
mendamos instalar también el paquete File-icons, ya que podremos
ver en el árbol del proyecto nuestros archivos con un icono que hace
referencia al código que se va a utilizar, basándose en la extensión del
fichero (Figura 2.10).
Figura 2.10
Resumen de los ficheros
del proyecto con el incono
de Python.
Cuando debemos revisar nuestro código en un fichero largo, recomen-
damos instalar un nuevo paquete llamado Minimap; de esta manera,
veremos en letra muy pequeña un resumen de todo el código y podre-
mos movernos por todo el documento de una manera sencilla y rápida.
Una herramienta muy útil, sobre todo cuando tenemos que trabajar en
equipo y queremos que nuestro código sea lo más legible posible, es
disponer de una guía de estilo para escribir nuestro código. Para ello,
instalaremos un paquete llamado Python-autopep8 (Figura 2.11).
Figura 2.11
Paquete “python-autopep8”, en
el buscador de ATOM.
No es suficiente con instalar el paquete; también tenemos que instalar
una librería ejecutando en nuestra terminal “pip install autopep8”. Tras
IDE: Atom IDE, IDLE, PyDev (Eclipse), Spyder IDE 21
Figura 2.12 pulsar Intro, aparecerá el mensaje “Successfully installed”, que confir-
Terminal Windows, instalando ma que la instalación se ha realizado correctamente (Figura 2.12).
“autopep8”.
Con todo instalado, podemos aplicar el formato presionando el atajo
de teclado Ctrl + Alt + S, y también desde las configuraciones del pa-
quete, indicando que queremos que se aplique este formato automáti-
camente tras guardar los cambios en el documento (Figura 2.13).
Figura 2.13
Interfaz de configuración de
ATOM.
El último apunte para dejar nuestro IDE preparado para empezar a
programar es instalar un paquete que nos va a facilitar el trabajo a los
desarrolladores de Python. Muchas veces nos equivocamos al escribir
nuestro código fuente; este paquete nos va a indicar dónde nos hemos
equivocado sin necesidad de ejecutar el código y visualizar que existe
un error sintáctico.
22 Entornos de trabajo para Python
Instalaremos el paquete Linter-flake8. Este nos va a pedir instalar al-
gunas dependencias que deberemos aceptar para poder utilizar este
paquete. Por otro lado, debemos instalar una librería de Python desde
nuestra terminal, como anteriormente, tecleando “pip install flake8”;
una vez instalados la librería y nuestro paquete, recomendamos reini-
ciar Atom para que se apliquen todas las funcionalidades; si nos solici-
ta descargar más dependencias para Linter, debemos responder que sí.
2.2. IDLE
IDLE es un IDE que comprende un entorno de desarrollo elemental
que nos permite ejecutar y editar código Python. IDLE corresponde a
las siglas en inglés Integrated Development and Learning Environment
(“Entorno Integrado de Desarrollo y Aprendizaje”).
Este IDE viene por defecto en la instalación de Python. Una vez insta-
lado en Windows, hacemos clic en el menú de Inicio y buscamos IDLE
(Figura 2.14).
Figura 2.14
Acceso directo aplicación IDLE
en Windows.
Si pulsamos para abrirlo, aparecerá una ventana (Figura 2.15); proba-
remos a ejecutar directamente un “print” (print(‘Hola’)), y pulsaremos
Intro para validar que funciona correctamente y nos imprime por pan-
talla el texto “Hola”.
Figura 2.15
Es ligero y sencillo; para las primeras prácticas con el lenguaje de pro- Interfaz terminal IDLE, y
gramación Python, podremos abrir o crear nuevos ficheros desde el ejecución de código.
IDE: Atom IDE, IDLE, PyDev (Eclipse), Spyder IDE 23
menú tecleando en “File”. Actualmente, se incluye por defecto en va-
rias distribuciones Linux.
Para ejecutar un programa o script generado o editado en IDLE, dis-
ponemos de dos opciones: pulsando F5 o haciendo clic sobre “Run” y
“Run Module” (Figura 2.16).
Figura 2.16
Interfaz IDLE con un fichero y la
ejecución en el shell de IDLE.
2.3. PyDev
PyDev es un complemento de Python para el IDE Eclipse; por tanto, ini-
cialmente debemos instalar Eclipse desde la web [Link]. En
este enlace podremos encontrar documentación, paquetes adicionales
y noticias del IDE PyDev para Python en Eclipse.
Este software de Eclipse está disponible para varias plataformas, como
Windows, Linux y Mac.
Una vez descargado, ejecutamos el instalador y se abrirá una ventana
(Figura 2.17), en la que seleccionaremos la primera opción, “Eclipse
IDE for Java Developers”.
Figura 2.17
Opción para seleccionar
durante la instalación de
Eclipse.
24 Entornos de trabajo para Python
Cuando termine la instalación, abrimos nuestro IDE instalado y vamos
al menú, hacemos clic en “Help” y pulsamos “Install New Software...”
(Figura 2.18).
Figura 2.18
Menú “Ayuda” para acceder a
instalar nuevo software.
Se abrirá una nueva ventana, en la que pulsaremos “Add”, teclearemos
“[Link] dentro del input “Location” y pulsaremos
el botón “Add” (Figura 2.19).
Figura 2.19
Ventana para añadir un
repositorio de Python.
Después de que Eclipse prepare lo necesario, nos aparecerá la siguien-
te pantalla; seleccionaremos la primera opción de PyDev y pulsaremos
el botón “Next”. En las siguientes pantallas, aceptaremos los términos
y condiciones, y pulsaremos “Finish” (Figura 2.20). Cuando esté todo
instalado, nos solicitará un reinicio de Eclipse, que aceptaremos.
Una vez preparado el IDE, y habiendo instalado Python anteriormente
en el sistema operativo, vamos a realizar la configuración del intérpre-
te para poder empezar a desarrollar con Python en PyDev.
IDE: Atom IDE, IDLE, PyDev (Eclipse), Spyder IDE 25
Figura 2.20
Interfaz de la disponibilidad en
el repositorio y continuar con
“siguiente”.
Desde la pantalla principal, hacemos clic sobre “Window” y selecciona-
mos “Preferences”; se abrirá una nueva pantalla, y en la lista de la izquier-
da buscaremos PyDev>Interpreters>Python Interpreter (Figura 2.21).
Figura 2.21
Menú “Window”,
acceso a preferencias
y al intérprete de Python.
Haremos clic en el botón “New”, saldrá un desplegable y pulsaremos
en “Choose from list”. Automáticamente realiza una búsqueda en
nuestro sistema y nos muestra un listado para seleccionar el intérprete
deseado (Figura 2.22).
26 Entornos de trabajo para Python
Figura 2.22
Menú “New”, acceso a
seleccionar de una lista.
Al pulsar el botón “OK”, nos aparece otra pestaña con todas las libre-
rías; luego pulsamos “OK” y vemos el resultado (Figura 2.23).
Figura 2.23
Ventana para seleccionar el
intérprete.
Pulsamos “Apply and Close” (Figura 2.24).
Figura 2.24
Interfaz de preferencias,
finalizar la configuración con
“Apply and Close”.
IDE: Atom IDE, IDLE, PyDev (Eclipse), Spyder IDE 27
Con la configuración del intérprete terminada, podemos empezar a
crear y probar nuestro IDE. Pulsamos sobre el menú en “File”, y hacemos
clic en “New”. Se nos mostrarán entonces tres opciones; de momento,
seleccionaremos “PyDev Project” y pulsaremos “Next” (Figura 2.25).
Figura 2.25
Ventana para crear el tipo de
proyecto a desarrollar.
Nos pedirá entonces un nombre para nuestro proyecto en “Project
Name”. Debemos seleccionar también el tipo de proyecto (en este caso,
“Python”), y también podemos seleccionar dónde guardar el proyecto;
para la prueba dejaremos la opción que viene por defecto y pulsaremos
en “Finish” (Figura 2.26).
Figura 2.26
Ventana para configurar el
nombre y el tipo de proyecto.
28 Entornos de trabajo para Python
Una vez creado nuestro proyecto, tenemos que empezar a desarrollar
nuestro código fuente. Para ello, haremos clic con el botón secundario
del ratón en la parte izquierda, sobre el nombre del proyecto, y elegi-
remos New>PyDev Module; le pondremos un nombre al módulo del
proyecto, pulsaremos en “OK” y ya tendremos nuestro proyecto listo
para escribir código fuente (Figura 2.27).
Figura 2.27
Menú para crear nuestros
archivos en el proyecto.
Figura 2.28
Podemos ejecutar nuestro código desde el menú Run>Run As, con el Interfaz IDE Eclipse, mostrando
atajo de la barra de herramientas o con la combinación de teclas Con- un fichero en Python y su
trol + F11 (Figura 2.28). ejecución.
2.4. Spyder IDE
Spyder IDE es un IDE específico para Python. Dispone de funciones
avanzadas de edición, depuración y revisión de la sintaxis. Gracias al
soporte de varias bibliotecas de Python como IPython, este IDE puede
proporcionar widgets muy potentes relacionados con la consola para
aplicaciones basadas en PyQt.
IDE: Atom IDE, IDLE, PyDev (Eclipse), Spyder IDE 29
Es multiplataforma, se liberó con licencia MIT e incluye varias herra-
mientas para la inspección y controles de calidad para Python.
Anaconda ha dejado de lado el desarrollo de este IDE; el desarrollo
Ejercicios solo va a mantener Spyder 3 y todo parece indicar que será mucho más
resueltos lento que antes, pero en principio eso no significa que vayan a aban-
Practica el ejercicio 2 con los donar el proyecto.
conocimientos adquiridos
hasta esta unidad. Este IDE es multilenguaje, posee un navegador de función/clase y un
evaluador del código fuente en el editor. Podremos explorar variables
creadas durante la ejecución de un archivo, y cuenta también con un
buscador y un explorador de archivos. Además, se puede utilizar como
una biblioteca de PyQt5.
Primero vamos a descargar e instalar Spyder IDE en Windows, que en-
contraremos en el apartado de descargas de [Link]
org. Para Mac es recomendable instalarlo desde Anaconda, y para Li-
nux, directamente desde la terminal.
Este IDE ya está preparado para trabajar directamente con él. La divi-
sión en pantalla es muy simple: a la izquierda, el editor de texto; a la
Figura 2.29 derecha, en la parte superior, el explorador de variables y archivos de
Ejemplo de vista de Spyder: ayuda; y en la inferior, la consola.
ejecutamos nuestro programa
para validar que todo funciona Se puede utilizar directamente la consola para ejecutar código fuente;
correctamente y visualizar el la ventaja de ejecutarlo aquí es que puede mostrar variables y su con-
resultado en la consola. tenido en el explorador de variables (Figura 2.29).
30 Entornos de trabajo para Python
También es posible agregar puntos de interrupción sobre el código
para tener una inspección y una ejecución controlada paso a paso. So-
lamente hay que hacer clic en la columna deseada en el lado izquierdo
de la pantalla, y aparecerá un punto rojo (ver Figura 2.29).
El programa nos advertirá de fallos en la sintaxis y de errores en nues-
tro código fuente; en caso de que se produzca uno, nos dará posibles
cambios para solucionarlo.
IDE: Atom IDE, IDLE, PyDev (Eclipse), Spyder IDE 31
Resumen
• Los IDE destacan por ofrecer un entorno de trabajo que facilita al de-
sarrollador el control y la gestión del proyecto.
• Atom es un ejemplo de cómo un editor de texto ha evolucionado gra-
cias a las demandas de la comunidad hasta ser uno de los IDE más
valorados. Destaca por la claridad de su interfaz.
• IDLE es el IDE incluido por defecto en la instalación de Python y tam-
bién en la mayoría de las distribuciones de Linux. Es muy simple y
ligero.
• PyDev es el complemento para el desarrollo en Python para Eclipse, el
IDE más usado debido a la cantidad de características de configuración
que posee y a su flexibilidad a la hora de incluir plugins y bibliotecas.
• El Spyder IDE es un IDE de código abierto 100 % (tanto él como sus
complementos). Además de estar desarrollado en Python, está opti-
mizado para trabajar con este lenguaje. Está enmarcado dentro del
segmento de los IDE destinados a la inteligencia artificial.
32 Entornos de trabajo para Python
3. Frameworks (Django, Spark,
Pytorch, Flask)
Tanto Django como Flask son frameworks para servidores web muy co-
nocidos y funcionales. Sin duda son dos de los más importantes y los
que más comunidad de desarrolladores arrastran, pero no son los úni-
cos, ya que, más allá de un propósito generalista, existen otros como
PyTorch, más centrados en funciones de machine learning.
Así pues, vamos a describir qué son y realizar una configuración del
entorno de desarrollo, y ofreceremos también unas guías básicas para
poder crear nuestras aplicaciones web.
3.1. Django
Django, al tratarse de un framework web de alto nivel, nos permite
ganar velocidad en el desarrollo sin perder seguridad ni facilidad en el
mantenimiento. Además, es gratuito y de código abierto, y cuenta con
un gran respaldo en foros, mucha documentación e incluso asistencia
de pago.
Nos ayuda con la seguridad, ya que nos evitará errores comunes al
no permitir colocar información de usuarios o contraseñas en lugares
vulnerables, almacenando en las cookies solamente una clave y todo
el resto en bases de datos; o directamente almacenando una encrip-
tación de contraseñas. También nos protege de otras vulnerabilidades
como las solicitudes falsas.
Gracias al hecho de estar escrito en Python, se puede ejecutar en va-
rias plataformas y no está vinculado a una en particular, y diversos
proveedores de alojamiento web permiten incluso integrarlo en su in-
fraestructura.
Django fue desarrollado entre 2003 y 2005 por un equipo de progra-
madores que tenían que mantener sitios web. Después de crear varios
proyectos, el equipo empezó a reutilizar mucho código y guías de
diseño; se convirtió en un estándar para ello y generaron un frame-
work web genérico de código abierto denominado Django. Este ha
ido creciendo e incorporando nuevas funcionalidades, corrigiendo
Frameworks (Django, Spark, Pytorch, Flask) 33
errores anteriores, soportando cada vez más tipos de bases de datos
y mayores funciones genéricas. Sigue teniendo un gran respaldo y ha
evolucionado para ser capaz de desarrollar cualquier proyecto web.
Entre las utilidades que más usaremos en la mayoría de los entornos
web están el mapeado de URL, las vistas, los modelos, las plantillas
o templates, los formularios, la serialización de datos para crear una
API e incluso un cacheo controlado, y los permisos o registro de usua-
rios.
Veremos a continuación el proceso de configurar y poner en marcha
un entorno con Django. Vamos a centrarnos en preparar Django para
la versión de Python 3, aunque actualmente existen muchas librerías
que solo están disponibles para Python 2.
Vamos a ver algunas diferencias en la puesta en marcha en diversos
sistemas operativos, y lo haremos dentro de un entorno virtual de
Python.
• En Ubuntu:
Primero debemos instalar el Virtualenvwrapper utilizando “sudo
pip3 install virtualenvwrapper”. A continuación, añadimos en el fi-
chero oculto de inicio del shell (“.bashrc”):
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export PROJECT_HOME=$HOME/Devel
source /usr/local/bin/[Link]
Estamos ajustando la localización donde se ubicarán nuestros en-
tornos virtuales, los directorios del proyecto y el script instalado con
este paquete.
Es necesario recargar el fichero de inicio ejecutando “source ~/.bas
hrc”; comprobaremos que en la terminal empiezan a ejecutarse
scripts y ya podremos crear un nuevo entorno virtual con el comando
“mkvirtualenv”.
• En macOS:
Los pasos son muy similares a los realizados con Ubuntu; lo único
que cambia es el nombre del fichero, que se llama .bash-profile.
34 Entornos de trabajo para Python
• En Windows 10
Primero debemos instalar Virtualenvwrapper-win. Aquí no necesita-
mos editar ningún fichero; solamente hay que ejecutar el comando
“Pip3 install virtualenvwrapper-win”
Ya estamos listos para crear nuestro entorno virtual mkvirtualenv. El Figura 3.1
proceso de creación del entorno virtual es muy parecido para todas Terminal Windows, tras la
las plataformas: vamos a crear un entorno con el comando “mkvir- ejecución del comando
tualenv” y el nombre de nuestro entorno. Si el entorno no está crea- “mkvirtualenv” Mi_Entorno_
do, se creará uno nuevo (Figura 3.1). Virtual.
Una vez creado el entorno, podemos instalar Django e iniciar el desa-
rrollo. Esto nos permitirá trabajar con varios entornos sin depender de
una versión concreta.
3.1.1. Instalación de Django
Comandos habituales:
• Deactivate: salir del entorno virtual actual.
• Workon: listar entornos virtuales disponibles.
• Workon “nombre” (sin comillas): activar el entorno del nombre espe-
cificado.
• Rmvirtualenv “nombre” (sin comillas): borrar el entorno del nombre
especificado.
• Runserver: arrancar nuestro servidor web (python [Link] runser-
ver).
Frameworks (Django, Spark, Pytorch, Flask) 35
1. Con el entorno virtual creado, instalamos Django con:
pip3 install django.
2. Una vez que hayamos descargado todos los paquetes necesarios, y
dependiendo del sistema operativo en el que nos encontremos, te-
cleamos lo siguiente:
ýý Windows: python -m django -version
ýý Linux/macOS: python3 -m django --version
Estamos comprobando que Python encuentra el módulo Django an-
teriormente instalado.
3. Para crear nuestro proyecto Django, ejecutamos:
Django-admin startproject “nombre_del_proyecto” (sin comillas)
4. Para poder trabajar con el proyecto, entramos mediante “cd” en la
carpeta con el “nombre_de_proyecto”.
Con esto podríamos tener nuestro framework listo para ser utilizado.
No obstante, vamos a realizar una sencilla práctica para crear un server
web con este framework.
Validación de la preparación del framework (práctica)
1. Para empezar, creamos la carpeta donde queremos que se guarde
nuestro proyecto y accedemos a ella (las comillas no forman parte de
los comandos en ningún caso): “cd C:\proyecto_django”.
2. Creamos nuestro entorno virtual: “mkvirtualenv entorno_django”.
3. Instalamos Django: “pip3 install django”.
4. Comprobamos que la instalación ha sido correcta: “python -m django
–version”.
5. Creamos nuestro proyecto web: “django-admin startproject mi_pri-
mera_web”.
6. Accedemos a la carpeta: “cd mi_primera_web”.
7. Ejecutamos nuestra web: “python [Link] runserver”.
36 Entornos de trabajo para Python
Si abrimos el navegador y vamos a la URL [Link] vere-
mos esto (Figura 3.2):
Figura 3.2
Web por defecto de Django,
una vez configurado.
Para mayor ampliación con Django:
8. Creación de la aplicación: “python [Link] startapp grupos”.
ýý Con esta acción acabamos de crear una nueva carpeta llena de fi-
cheros para las distintas partes de la aplicación. El nombre de cada
fichero nos ayuda a identificar el propósito de cada uno en inglés.
ýý Dispondremos de una carpeta migrations, ficheros que nos permi- +
tirán actualizar la base de datos a medida que modifiquemos los
modelos. Para saber más
Parámetros importantes:
9. Registrar la aplicación creada: SECRET_KEY: clave secreta
para la seguridad del sitio
ýý Abrimos el fichero [Link] y, en la definición de la lista INSTA- web de Django.
LLED_APPS, añadimos “/mi_primera_web/grupos/[Link]”. DEBUG: permite mostrar
logs de depuración que nos
10. Aprovechamos para modificar el “TIME_ZONE = ‘Europe/Madrid’” muestren cualquier error
del anterior fichero. durante el desarrollo. Hay
que actualizarlo a “false”
11. Especificamos la base de datos que vamos a utilizar. Usaremos un para producción con el fin de
SQLite; por tanto, utilizamos la configuración por defecto. evitar un fallo de seguridad.
Frameworks (Django, Spark, Pytorch, Flask) 37
12. Conectamos el mapeador [Link].
from [Link] import admin
from [Link] import path
urlpatterns = [
path(‘grupos/’, [Link]),
]
13. Podemos redirigir la URL principal mediante la función especial Re-
directView.
14. Para finalizar, creamos el fichero [Link] dentro de la carpeta “gru-
pos” e incluimos:
From [Link] import url
From . import views
Urlpatterns=[]
15. Migramos la base de datos para igualar el modelo a la base de datos.
Python [Link] makemigrations
Python [Link] migrate
16. Ejecutamos el server mediante Python (“[Link] runserver” para
ejecutar el servidor) y comprobamos que podemos ver la web, aun-
que nos muestre un pequeño error en el navegador.
+ 3.2. Spark
Para saber más Spark es un framework de computación en clúster de código abierto. El
El software catalogado como código inicial del proyecto Spark se donó a la Apache Software Foun-
open source o de código dation, que se encarga actualmente de su mantenimiento. Este frame-
abierto está diseñado con la work proporciona una interfaz para la programación de clústeres, está
premisa de la accesibilidad muy orientado a la velocidad que proporciona Apis para Python, Java,
para el gran público: todos R y muchas herramientas de alto nivel como Spark SQL.
pueden ver, modificar y
distribuir el software bajo la Se desarrolló en 2009, su código se liberó en 2010 y en 2013 fue dona-
paquetización o forma que do a la Apache Foundation. En 2015 había más de 100 contribuidores,
consideren oportuna. era uno de los proyectos más activos de big data.
38 Entornos de trabajo para Python
Spark facilita la implementación de algoritmos iterativos que visitan su
dataset muchas veces en un mismo bucle.
Los siguientes son los tres módulos más utilizados dentro de Spark:
• Spark SQL: es capaz de usar diferentes fuentes de datos (como Mon-
goDB, entre otras) y permite gestionarlas como si fuesen tablas de
datos estructuradas.
• Spark Streaming: es capaz de procesar datos utilizando varios algo-
ritmos y funciones, que son procesados y enviados en tiempo real a
archivos en “File systems”. Convierte un gran flujo de datos en peque-
ños lotes; de esta forma, consigue que el procesamiento sea casi en
tiempo real.
• MLlib: es el nombre que se utiliza para referenciar las bibliotecas inte-
gradas que disponen de una serie de algoritmos clásicos de machine
learning.
Desde sus inicios, Spark está diseñado para solucionar muchos proble-
mas y reducir el código en los programas. Todas estas funcionalidades
posicionan Spark como una de las mejores y más baratas soluciones
para el big data.
3.3. Pytorch
PyTorch es un framework de machine learning de código abierto, flexi-
ble y modular para la investigación.
Fue desarrollado por Facebook AI Research. Estos desarrolladores fu-
sionaron Caffe2 en PyTorch en 2018. Es competencia directa de Tensor-
Flow (Google).
Realiza regresión, clasificación y redes neuronales, funciona tanto en
CPU como en GPU y, aunque TensorFlow puede poner en funciona-
miento un modelo más rápido y con algo de personalización, PyTorch
se puede personalizar mucho más siguiendo un enfoque de programa-
ción orientada a objetos desde clases de construcción.
Los tiempos de entrenamiento en PyTorch son más rápidos. Aunque no
es un rasgo que suela valorarse mucho, en grandes proyectos puede
marcar su elección.
Frameworks (Django, Spark, Pytorch, Flask) 39
+ PyTorch no necesita Lua, ya que usa directamente Python, y su curva de
aprendizaje es muy suave. Algunas de sus principales características son:
Para saber más • Es compatible con varias plataformas.
Lua es un lenguaje de
programación bastante • Es muy simple de depurar utilizando herramientas de depuración de
bien estructurado y Python.
ligero. Es multiparadigma
e imperativo, y fue • Dispone de una gran comunidad que ha creado muchas herramientas
diseñado como un y bibliotecas para extender PyTorch, y es muy bien recibido en plata-
lenguaje interpretado con formas en la nube.
la posibilidad de poder
escalarse. • Nos permite realizar trabajos de capacitación en GPU y ejecutar mode-
los en un entorno de producción.
Haremos una importación rápida para probar PyTorch, y lo haremos
desde [Link] Crearemos un nuevo pro-
yecto, añadiremos el código fuente de la captura y agregaremos al
final que nos imprima las versiones de PyTorch para validar su funcio-
namiento (Figura 3.3).
Figura 3.3
Interfaz colab, ejecutando
código Python utilizando
PyTorch.
40 Entornos de trabajo para Python
3.4. Flask
Flask es un framework programado en Python que nos permite crear
aplicaciones web con muy poco código fuente.
Ejercicios
Flask no incorpora una capa para gestionar las bases de datos o vali- resueltos
dación de formularios, pero sí admite extensiones para añadir estas Practica el ejercicio 3 con los
funcionalidades. conocimientos adquiridos
hasta esta unidad.
Flask fue creado por un grupo internacional de entusiastas de Python.
En 2020 obtuvo una alta puntuación en Github en desarrollo web de
Python, ligeramente por detrás de Django. Está basado en Jinja2, Po-
coo y Wekzeug. Entre sus funciones cabe destacar:
• Soporte para pruebas unitarias.
• Utilización de plantillas de Jinja.
• Soporte para cookies seguras.
• Mucha documentación y un gran apoyo en foros.
Vamos a realizar nuestra primera aplicación web con Flask:
1. Creamos nuestra carpeta del proyecto y accedemos a ella mediante Campus online
“cd proyecto_flask”; ejecutamos “python -m venv venv” y nos genera- Accede al Campus online
rá la carpeta “venv” dentro de nuestro proyecto, con la estructura de para ver el videotutorial
la derecha (Figura 3.4). Configuración de entornos
Figura 3.4
Terminal Windows, tras la eje-
cución de python -m venv ven.
2. Activaremos nuestro entorno mediante el comando “venv\Scripts\ac-
tivate”; el indicador de la consola cambia de forma y nos muestra el
entorno activo (Figura 3.5). Figura 3.5
Visualización en el terminal
de Windows, tras la activación
del entorno.
Frameworks (Django, Spark, Pytorch, Flask) 41
! 3. Dentro de este entorno activo, ejecutamos “pip install Flask” para rea-
lizar la instalación de Flask.
Recuerda 4. Comprobamos que la instalación ha sido correcta: “python -m flask
Para que nuestro servidor -version”.
pueda verse externamente,
debemos indicar en el 5. Para probar nuestro proyecto, vamos a crear un fichero con un códi-
arranque –host=[Link]. go muy sencillo en el cual importamos la clase Flask y creamos una
En el modo de depuración, instancia de esta clase. Luego utilizaremos el “route()” para indicar a
un usuario de la aplicación Flask qué URL activa nuestra función (Figura 3.6).
puede ejecutar código
Python arbitrario en
el ordenador; hay que
deshabilitar el depurador en
un entorno de producción.
Figura 3.6
Fichero Python desde la
interfaz Notepad ++.
6. Para ejecutarlo, vamos a la consola del sistema, ejecutamos: “set FLASK_
APP=[Link]” y a continuación ejecutamos “flask run” (Figura 3.7).
Figura 3.7
Terminal de Windows, después
de ejecutar “flask run”.
7. En el navegador tecleamos [Link] y podremos visuali-
zar nuestra web generada mediante Flask (Figura 3.8).
Figura 3.8
Web generada con el
framework Flask desde
el navegador.
42 Entornos de trabajo para Python
Resumen
• Django es un framework web multiplataforma de alto nivel destinado
a desarrolladores ya experimentados. Permite acelerar el desarrollo
sin perder seguridad ni facilidad en el mantenimiento. Es gratuito y
de código abierto, lo que hace que tenga un gran respaldo en foros y
mucha documentación; aun así, tiene la posibilidad de una asistencia
de pago.
• Spark es un framework de computación en clúster de código abierto.
Proporciona una interfaz para la programación de clústeres, está muy
orientado a la velocidad que proporciona Apis para Python, Java, R y
muchas herramientas de alto nivel como Spark SQL, por lo que es una
de las mejores opciones a la hora de afrontar un proyecto de big data.
• Flask es un framework web ideal para iniciarse en la programación con
Python. Se pueden crear de manera sencilla aplicaciones web con muy
poco código fuente. No incorpora una capa para gestionar bases de
datos o validación de formularios, pero admite extensiones para estos
fines.
• PyTorch Es un framework de machine learning de código abierto,
flexible y modular para la investigación. Es la competencia directa
de TensorFlow, de Google. Una de las grandes diferencias respecto a
este es que se puede personalizar mucho más y los tiempos de entre-
namiento en PyTorch son más rápidos; aunque este no es un factor
que suela valorarse mucho, en grandes proyectos puede justificar su
elección.
Frameworks (Django, Spark, Pytorch, Flask) 43
4. Editores (Vim, Emacs, Sublime
Text, Notepad ++)
En esta unidad conoceremos cuatro editores de entre la gran variedad
de editores de texto que podemos utilizar. No incluiremos en esta breve
descripción Atom, que ya conocemos, ya que le hemos instalado los
paquetes pertinentes para convertirlo en IDE, por lo que no tendría de-
masiado sentido utilizarlo como un simple editor para Python.
4.1. Vim
Vim es una versión del editor de texto Vi, pero con varias mejoras. Está
presente en todos los sistemas UNIX. Su primera versión se creó en 1991,
y desde entonces ha recibido una gran variedad de mejoras. La principal
característica de este editor es que dispone de diferentes modos para
realizar algunas operaciones, ya sea combinando abreviaturas de teclas
o funciones de la interfaz gráfica.
En 1994 experimentó un cambio importante al incorporar ventanas. Con
Vi se pueden tener varios ficheros abiertos, pero solo se puede visualizar
uno; en cambio, las ventanas de Vim permiten ver los ficheros simultá-
neamente. En 1996, Vim incorporó una interfaz de usuario; y, en 1998,
el resaltado de sintaxis.
Vim dispone de mucha documentación; el usuario puede usar la ayuda
para solucionar problemas y acceder a la descripción de las funcio-
nalidades; en la versión gráfica también podemos utilizar el ratón o
incluso buscar con “:helpgrep” para localizar una palabra en los textos
de ayuda.
Las ventajas que nos proporciona Vim son que podemos personalizarlo
y extenderlo a nuestra necesidad; por ejemplo, podemos mapear los
atajos de teclas o extenderlos. También incorpora comparación de fi-
cheros; por ejemplo, si tenemos varias versiones de archivos, es de gran
utilidad poder saber dónde hay una modificación de una función o qué
variables se han actualizado.
Además, dispone de un lenguaje interpretado llamado Vimscript o VimL
para programar funcionalidades y automatizar operaciones complejas.
44 Entornos de trabajo para Python
Las combinaciones de teclas están relacionadas con las palabras ingle-
sas de la función que realizan; las nuevas versiones van incorporando
el uso del ratón en el entorno visual, la aplicación ocupa poco espacio
y tiene fluidez en máquinas con pocos recursos.
En la versión actual se menciona a más de 50 colaboradores, y hay una
gran participación para informar de bugs y realizar mejoras o adaptacio-
nes a otras plataformas.
Como hemos comentado anteriormente, puede trabajar en varios mo-
dos, que son:
• Comandos
• Inserción
• Línea de órdenes o ex
• Visual o selección
La desventaja de Vim es que necesita un periodo largo de aprendizaje
para que utilizarlo nos sea de ayuda y pueda marcar una diferencia signi-
ficativa en el tiempo en el desarrollo. También le falta permitir un mayor
uso del ratón (Figuras 4.1 y 4.2).
Figura 4.1
Interfaz visual aplicación VIM.
Editores (Vim, Emacs, Sublime Text, Notepad ++) 45
Figura 4.2
Terminal de VIM.
4.2. Emacs
Emacs es un editor de texto con una gran variedad de funciones; es
un proyecto de GNU descrito por sus desarrolladores como un editor
extensible, personalizable y modificable en tiempo real. Algunos datos
de este editor:
• Sus letras significan Editor Macros.
• Se escribió en 1975.
• Se han lanzado varias versiones e incluso enlazado con varios hilos de
otros proyectos.
• Está escrito en C.
• Se ha extendido con funciones en Lisp para la edición de texto; por lo
tanto, es extensible y modificable en tiempo real.
Sus versiones más utilizadas hoy en día son GNU Emacs y XEmacs; estas
constituyen uno de los editores más potentes, ya que no solo es un pro-
cesador de texto, sino que además dispone de comandos para controlar
palabras y moverse por el texto, y de resaltado de sintaxis para facilitar
la lectura del código fuente.
Más allá de su filosofía inicial, este software puede ser modificado prác-
ticamente sin límite por el usuario o por fragmentos de código Lisp, y
una de sus propiedades más atractivas, y que lo hace muy potente a
pesar de su sencillez, es que se pueden encontrar bibliotecas de terceros
en Internet.
46 Entornos de trabajo para Python
Emacs nos permite utilizarlo como un IDE para editar, compilar y depu-
rar código fuente.
Existe una desventaja o penalización en su rendimiento por cargar e
interpretar el código Lisp, que antiguamente era más lento que otros,
ya que necesitaba de un buen hardware de respaldo. Por contra, una de
sus ventajas es que permite texto escrito en muchos idiomas y soporta
distintas codificaciones, como UTF-8 y Unicode.
Este programa permite su utilización por parte de usuarios con deficien-
cias visuales mediante un subsistema llamado Emacspeak, que permite
editar el texto mediante una interfaz de audio.
Emacs mantiene el texto en objetos denominados buffers, que el usua-
rio puede crear de nuevo y borrar. Los buffers pueden convivir entre
ellos y almacenan texto temporal e información de archivos binarios.
Emacs puede dividir el área de edición en secciones separadas, lo que
nos permite mostrar más de un buffer a la vez e incluso visualizar el có-
digo fuente.
4.3. Sublime Text
El editor de texto Sublime Text está desarrollado en C++ y en Python
para integrar plugins.
Inicialmente fue desarrollado como una extensión de Vim, y poco a
poco se creó su propia identidad, aunque conserva el modo de edición
“Vintage mode” de tipo Vi.
El lanzamiento de esta aplicación se produjo en 2008, y su última ver-
sión estable fue lanzada en 2019.
Podemos descargarlo y probarlo gratuitamente, pero no es un software
100 % libre y debe adquirirse una licencia para su uso recurrente, aun-
que la prueba no caduque y sea plenamente funcional. Soporta gran
cantidad de lenguajes: Python, Java, PHP, R, etc. Veamos algunas de sus
características más destacadas:
• Modificación del layout del programa.
• Multicursor.
Editores (Vim, Emacs, Sublime Text, Notepad ++) 47
• Minimapa del código.
• Soporte nativo de varios lenguajes.
• Apertura de varias pestañas.
• Resaltado de paréntesis y sangrado para determinar dónde acaban las
operaciones matemáticas complejas, destacando la seleccionada por
el cursor y la que abre o cierra la función u operación.
A continuación, vamos a configurarlo para poder utilizarlo con nuestros
desarrollos Python.
Tenemos que descargar Sublime Text desde Internet ([Link]
[Link]/3); es multiplataforma, así que podemos trabajar en Linux,
macOS o Windows sin ningún problema. Es muy rápido de instalar e
incluso cuenta con una versión portable para Windows.
Antes de nada, para poder añadir complementos debemos instalar el
gestor de paquetes: en el menú “Tools” seleccionaremos la última op-
ción, llamada “Install Package Control” y cambiará desde ese momento
a “Developer” para poder añadir nuevos plugins.
A continuación, debemos abrir la “Paleta de comandos”, bien mediante
la combinación Control + Shift + P, bien desde el menú Tools>Command
Palette (Figura 4.3) y luego, seleccionamos la opción “Install Package”
(Figura 4.4).
Figura 4.3
Menú “Herramientas”,
para acceder a la paleta de
comandos.
Figura 4.4
Buscador de paquetes de
Sublime.
48 Entornos de trabajo para Python
Nos aparecerá otro buscador, en el que teclearemos “Anaconda”; este
paquete de Python va a convertir nuestro editor en un IDE casi comple-
to, con autocompletado de código, muestra de errores de sintaxis, refac-
tor del objeto (cambio de nombre) y la posibilidad de ejecutar nuestro
código desde la consola de comandos del sistema (Figura 4.5).
Figura 4.5
Buscador de paquetes
instalables.
Podemos desactivar PEP8, que viene por defecto en Anaconda; es la guía
de estilo de código fuente en Python, y es muy aconsejable utilizarla si
se trabaja sobre todo en equipo.
Desde “Preferences” en el menú de Sublime Text, vamos a Package
Settings>Anaconda>Settings Default; se abrirá un fichero en el que debe-
remos editar la línea donde aparece ““pep8” : true”; cambiaremos “true”
por “false” y guardaremos el fichero desde el propio editor. (Figura 4.6).
Figura 4.6
Menú “Anaconda”,
acceso “configuraciones”,
desactivación pep8.
Existe una gran variedad de combinaciones de teclado; recomendamos
revisar y aprender varias de ellas, ya que nos ahorrarán tiempo durante
el desarrollo.
Para que Sublime Text abra una terminal para ejecutar automáticamente
nuestro código, debemos configurarlo desde Tools>Build System>New
Editores (Vim, Emacs, Sublime Text, Notepad ++) 49
Build System y pegar este código, donde indicaremos la ubicación de
Python:
{
“cmd”: [“start”, “cmd”, “/k”, “c:/python38/[Link]”,
“$file”],
“selector”: “[Link]”,
“shell”: true,
“working_dir”: “$file_dir”
}
Una vez creado, lo seleccionamos desde Tools>Build System; ahora, pul-
sando Control + B, comprobaremos que se ejecuta correctamente nues-
tro código en la consola de comandos del sistema operativo (Figura 4.7).
Figura 4.7
Interfaz “Sublime” con el
código fuente, y ejecución con
el terminal de Windows.
4.4. Notepad ++
Notepad ++ es un editor de texto altamente funcional, de código abierto
y gratuito; es editor funcional para Windows, puede colorear diferentes
lenguajes de programación, desde Assembly a XML, pasando por PHP y
muchos otros; y, por supuesto, también Python.
Además del resaltado de colores, tiene más características de programa-
ción que nos van a permitir crear accesos directos para programar llama-
das, como ejecutar código Python sin cambiar de ventana que ejecute
un shell de Python. También nos agrupará secciones de código y nos
permitirá plegarlas para ocultar funciones y hacer la página más legible.
50 Entornos de trabajo para Python
Nos ofrece definir niveles de sangría para definir bloques de código
funcional; y aunque tiene similitudes con Bloc de notas de Windows,
el Notepad ++ nos proporciona una mayor cantidad de herramientas y
opciones avanzadas.
Este editor está escrito en C++, y utiliza directamente la Ap de Windows
y STL; por tanto, nos asegura una mayor velocidad de ejecución y un
tamaño muy reducido de la aplicación. Se puede utilizar en Linux me-
diante Wine, una aplicación para ejecutar archivos .exe en este tipo de
sistemas operativos.
Otra ventaja que tiene el Notepad ++es que nos permite seleccionar el
lenguaje que estamos utilizando, así que podemos estar trabajando en
PHP y pasar de una forma sencilla a programar en Python sin cambiar de
editor, solo con un clic.
Este editor dispone de una gran cantidad de plugins compatibles; por
ejemplo, Compare, que nos ayuda a ver las diferencias entre varios fiche-
ros y a realizar búsquedas entre todos los ficheros abiertos para encon-
trar rápidamente referencias de funciones.
A continuación, vamos a preparar el editor para ejecutar Python con un
acceso directo:
1. Primero, para resaltar nuestro código debemos seleccionar el lengua-
je de programación Python o guardar nuestro código con una exten-
sión .py (Figura 4.8).
Figura 4.8
Interfaz “Notepad++”, con
código fuente.
2. Para agregar la funcionalidad de “Ejecutar Python” directamente en el
editor sin cambiar de ventana, debemos añadir un acceso directo; en
el menú, vamos a “Ejecutar” y hacemos clic en “Ejecutar” o pulsamos
directamente la tecla F5 (Figura 4.9).
Editores (Vim, Emacs, Sublime Text, Notepad ++) 51
Figura 4.9
Menú “Ejecutar” del programa
Notepad++.
3. Se abrirá un cuadro de diálogo “Run...” para ingresar nuestro coman-
do; en este campo introduciremos la ruta donde tenemos Python; en
nuestro caso:
C:\Python38\[Link] $(FULL_CURRENT_PATH)
Esto le indicará a Notepad++ dónde debe ejecutar el intérprete; si
tenemos varios ficheros abiertos, solo ejecutará el archivo de la vista
actual (Figura 4.10).
Figura 4.10
Ventana, configuración
ejecutable Python
4. Pulsamos en “Guardar” y nos preguntará qué abreviatura de teclado
queremos utilizar e incluso qué nombre queremos poner para este
acceso directo. En este ejemplo vamos a seleccionar Control + E, le
pondremos como nombre “Python” y pulsaremos el botón “OK” (Fi-
gura 4.11).
Figura 4.11
Ventana de configuración,
atajos de teclado.
5. Una vez dentro de nuestro código, pulsamos “Ejecutar” o Control + E
y se ejecutará nuestro programa (Figura 4.12).
52 Entornos de trabajo para Python
Figura 4.12
Terminal de Python ejecutado
desde Notepad++.
Existe un pequeño inconveniente: nuestro programa no podrá estar al-
macenado en una ruta con espacios, y al final de nuestro código debe-
mos incluir la función “input” (input(‘Enter’)) para que pare la consola;
en caso contrario, no podremos visualizarla en pantalla. Campus online
Accede al Campus online
para ver el videotutorial
Google Colab.
Editores (Vim, Emacs, Sublime Text, Notepad ++) 53
Resumen
• Vim es el editor de texto más antiguo que aún hoy en día se usa para
el desarrollo de software y que, lejos de desaparecer o quedarse ob-
soleto, es uno de los preferidos por la comunidad programadora. Su
mayor ventaja es la personalización que nos permite, mientras que
su principal desventaja es que funciona en modo texto, lo que hace
que su curva de aprendizaje pueda representar un hándicap.
• Emacs es un editor de texto extensible, personalizable y en tiempo
real de GNU. Dispone de comandos para controlar palabras y moverse
por el texto, y resaltado de sintaxis para facilitar la lectura del código
fuente. Cuenta con bibliotecas creadas por terceros en Internet y es
posible usarlo como un IDE para editar, compilar y depurar código
fuente.
• SublimeText es un editor de texto con funcionalidades típicas de un
IDE, aunque no lo sea. Inicialmente era una parte de Vim, pero poco a
poco creó su propia identidad. Entre sus características más destaca-
das están el poder de personalización (hasta el punto de poder modi-
ficar el layout del programa), así como el resaltado de paréntesis y el
sangrado para determinar dónde acaba cada instrucción.
• El editor de textos Notepad++ es un editor de texto plano como Note-
pad o Bloc de notas de Windows, pero con funcionalidades visuales
que le hacen estar por encima en cuanto a prestaciones. Es de código
abierto y gratuito, y, como funcionalidad técnica extra, puede ejecutar
código Python sin cambiar de ventana, ya que puede mostrarlo en un
shell integrado. Agrupa secciones de código y nos permite plegarlas,
ocultar funciones y hacer la página más legible.
54 Entornos de trabajo para Python
Índice
Esquema de contenido 3
Introducción 5
1. IDE, frameworks y editores en Python: diferencias
y áreas específicas de trabajo 7
1.1. ¿Qué es un IDE? 7
1.1.1. Origen de los IDE 8
1.1.2. Características, componentes y ejemplos de IDE 9
1.2. ¿Qué es un framework? 10
1.2.1. ¿Qué debemos analizar antes de utilizar un framework? 11
1.3. ¿Qué es un editor de texto? 13
Resumen 15
2. IDE: Atom IDE, IDLE, PyDev (Eclipse), Spyder IDE 16
2.1. Atom IDE 16
2.2. IDLE 23
2.3. PyDev 24
2.4. Spyder IDE 29
Resumen 32
3. Frameworks (Django, Spark, Pytorch, Flask) 33
3.1. Django 33
3.1.1. Instalación de Django 35
3.2. Spark 38
3.3. Pytorch 39
3.4. Flask 41
Resumen 43
4. Editores (Vim, Emacs, Sublime Text, Notepad ++) 44
4.1. Vim 44
4.2. Emacs 46
4.3. Sublime Text 47
4.4. Notepad ++ 50
Resumen 54
Índice 55