Algoritmos y Estructuras de Datos Herramientas Lenguaje de programación
!Prog C/C++ Rust
Linux Matemáticas
Mates Discretas
Programación Orientada a Objetos Sistemas Operativos

Módulos en Python

[date: 12-07-2023 00:00] [last modification: 12-07-2023 19:16]
[words: 1147] [reading time: 6min] [size: 25845 bytes]

Breve explicación de como ejecutar programas Python e importar librerías

Instalación de Python

Esta es una operación bastante sencilla, aquí puedes encontrar la guía oficial de instalación de Python detallada.

Para Windows es simplemente ejecutar el instalador (y asegurarse de que se añada al PATH).

Y para Linux, seguramente tu distribución tenga un paquete de Python. Por ejemplo, para distribuciones basadas en Debian simplemente:

1sudo apt install python3 python3-dev

Ahora, para comprobar que todo funciona ejecuta en una terminal:

1python3 --version

Si no da un error del tipo command not found, quiere decir que todo está instalado correctamente.

Uso básico de Python

Para ejecutar un programa se escribe:

1python3 <filename>.py

O doble clic en el explorador de archivos si el sistema operativo lo detecta como un programa Python (se debería desplegar la ventana de comandos si es de consola).

Importar módulos

Para importar otro archivo fuente desde otro en su misma carpeta, se añade con un import al inicio con su nombre, en este caso modulo.py:

1import modulo
2modulo.foo()

Nótese que para acceder a las funciones/clases del módulo, primero se debe usar su nombre. También se puede cambiar su nombre, poniendo as y a continuación el nombre que se le quiera dar:

1import modulo as mod
2mod.foo()

Si el módulo está dentro de una carpeta o paquete, se añade antes from y el nombre del paquete (paquete/modulo.py):

1from paquete import modulo

Si hay más subpaquetes, se van accediendo a ellos mediante el punto (.):

1from paquete.subpaquete import modulo

Además, para evitar tener que usar el nombre del módulo todo el rato, se puede importar todo de golpe gracias a import *:

1from paquete.subpaquete.modulo import *
2foo()

Y por el contrario, si solo vas a usar una clase o una función, puedes incluir solo esa; y si se intenta usar cualquier otra, dará un error:

1from paquete.subpaquete.modulo import foo
2foo()

Cabe recalcar que el programa principal debe encontrarse en la raíz de los paquetes, para que pueda encontrar los demás archivos.

Dónde Python busca los módulos

Cuando se hace un import de un módulo, Python busca en varias carpetas para ver si lo encuentra. Si es un módulo creado por tí y perteneciente al proyecto, es posible que esté en la misma carpeta; pero otros módulos como los de la librería estándar o instalados con pip, pueden que estén en otros lugares.

Para ver donde Python busca (por orden), simplemente ejecuta:

1import sys
2print(sys.path)

“Compilar”

Para compilar el programa y que nadie pueda modificar nuestro código fácilmente podemos exportarlo a .pyo o .pyc. Este último está más optimizado pero tiene algunas limitaciones.

Para compilarlo a .pyc se puede usar el comando:

1python3 -m compileall
2# o para un único archvivo
3python3 -m py_compile main.py

Los archivos se generarán en una carpeta llamada __pycache__. Recuerda que antes de poder ejecutar tienes que cambiarle el nombre para que Python encuentre el archivo al cual te estás refiriendo en los imports.

Se siguen ejecutando como siempre:

1python3 <filename>.pyc

Instalar módulos

Para extender la funcionalidad base de Python y de su librería estándar, es posible instalar módulos desarrollados por la comunidad.

Pip

Pip es la herramienta preferida para instalar paquetes de Python. Si has instalado python desde el código fuente o con Homebrew, ya deberías tenerlo. Para comprobar si la tienes instalada prueba:

1python3 -m pip --version
2# o bien
3pip --version

Alternativamente puedes usar pip3, pero generalmente solo son alias.

Para instalarlo, primero puedes usar lo siguiente:

1python3 -m ensurepip --default-pip

En caso de error puedes probar a buscar el paquete de tu distribución de Linux o usar el script get-pip.py, pero ojo, este puede no coordinarse bien con el resto de herramientas que tengas.

1python3 get-pip.py

Los comandos básicos de Pip son los siguientes (más información en la guía de usuario de Pip:

Nota

Pip se puede llamar desde Python:

1python3 -m pip

o directamente como comando:

1pip
pip install <paquete>Instalar <paquete>
pip uninstall <paquete>Desistalar <paquete>
pip listMuestra los paquetes instalados
pip list --outdatedMuestra los paquetes instalados sin actualizar
pip show <paquete>Muestra más información sobre el paquete <paquete>
pip search <paquete>Busca el paquete <paquete>

Entorno virtual

Nota
Esto se introdujo en la versión 3.3 de Python, por lo que con versiones anteriores no funciona.
Nota
Puede que en este vídeo se explique mejor.

Los entornos virtuales se recomiendan para desarrollar un proyecto con dependencias de Python porque de lo contrario tendrías los módulos instalados a nivel del sistema, lo que puede dar problemas:

La solución es crear un entorno donde se instalarán estos paquetes, pero de forma local. Esta se conforma de dos partes:

Crear y usar entornos virtuales

Para crear estos entornos, se utiliza la herramienta venv. Prueba a ejecutar:

1python3 -m venv

Y si no aparece un error de no module named venv, es que está instalado correctamente.

Para crear un entorno virtual en la carpeta actual ejecuta:

1python3 -m venv .venv

Siendo .venv el nombre. Puedes escoger otro nombre, pero este es bastante popular. Se creará una carpeta con ese nombre y dentro contendrá:

A continuación, hay que activar el entorno con el siguiente comando:

1source .venv/bin/activate     # Linux/Mac
2source .venv/Scripts/activate # Windows WSL / Git bash
3.env/Scripts/activate         # Windows CMD / Powershell

Y debería cambiar el prompt para indicar que el entorno se está usando:

1(.venv) ~/proyecto $

Además, si ahora muestras la variable $PATH / %PATH%, verás que la primera dirección que sale es donde está la versión del Python del entorno virtual.

Ahora simplemente se pueden usar comandos normales de Python y de Pip para instalar paquetes.

El entorno solo estará activo durante esa sesión de consola, si la cierras, tendrás que volver a activarlo.

requirements.txt

En el caso de enviar el código a otra persona, esta deberá instalar también las dependencias. Para ello, se listan todas ellas en un archivo llamado por convención requirements.txt. Para dependencias de desarrollo (librerias que no se necesitan para ejecutar el código, pero sí para otras cosas, como tests), se suelen listar en requirements-dev.txt.

En la documentación de Pip aparece el formato del archivo y un ejemplo.

Para instalar los requerimientos:

1python3 -m pip install -r requirements.txt
2# o bien
3pip install -r requirements.txt

Y para obtener los requerimientos:

1python3 -m pip freeze > requirements.txt
2# o bien
3pip freeze > requirements.txt
Volver a Lenguaje de programación