7.9 KiB
30 Días de Python: Día 20 - PIP
📘 Día 20
Python PIP - Gestor de paquetes de Python
¿Qué es PIP?
PIP significa Preferred Installer Program, que en español puede traducirse como «programa de instalación preferido». Usamos pip para instalar paquetes de Python. Un paquete es una colección de módulos (o subpaquetes) que podemos instalar y luego importar en nuestras aplicaciones. En la práctica, en lugar de reescribir utilidades comunes, instalamos paquetes útiles y los importamos.
Instalar PIP
Si aún no tienes pip instalado, instálalo ahora. En la terminal o símbolo del sistema ejecuta:
pip install pip
Comprueba si pip está instalado con:
pip --version
pip --version
# ejemplo de salida:
# pip 21.1.3 from /usr/local/lib/python3.7/site-packages/pip (python 3.9.6)
Si ves un número diferente, significa que pip está instalado en tu sistema.
Instalar paquetes con pip
Probemos a instalar numpy, una librería numérica de Python muy usada en ciencia de datos y aprendizaje automático.
- NumPy ofrece:
- Potentes arrays N-dimensionales
- Operaciones vectorizadas (broadcasting)
- Herramientas para integrar con C/C++ y Fortran
- Funciones de álgebra lineal, transformadas de Fourier y generadores aleatorios
pip install numpy
Ejemplo de uso en el intérprete de Python:
>>> import numpy
>>> numpy.version.version
'1.20.1'
>>> lst = [1, 2, 3, 4, 5]
>>> np_arr = numpy.array(lst)
>>> np_arr
array([1, 2, 3, 4, 5])
>>> len(np_arr)
5
>>> np_arr * 2
array([ 2, 4, 6, 8, 10])
>>> np_arr + 2
array([3, 4, 5, 6, 7])
Pandas es otra librería muy usada para estructuras de datos y análisis. Instalémosla:
pip install pandas
>>> import pandas
Esta sección no pretende profundizar en NumPy o Pandas, sino solo mostrar cómo instalar e importar paquetes.
Hay módulos de la librería estándar, por ejemplo webbrowser, que permiten abrir sitios web. No necesitan instalación.
import webbrowser # módulo para abrir sitios web
# lista de URLs de ejemplo
url_lists = [
'http://www.python.org',
'https://www.linkedin.com/in/asabeneh/',
'https://github.com/Asabeneh',
'https://twitter.com/Asabeneh',
]
# abrir cada URL en una nueva pestaña
for url in url_lists:
webbrowser.open_new_tab(url)
Desinstalar paquetes
Para eliminar un paquete instalado:
pip uninstall packagename
Lista de paquetes
Para listar los paquetes instalados en tu entorno:
pip list
Mostrar información del paquete
Para ver información de un paquete:
pip show packagename
Ejemplo:
pip show pandas
Salida de ejemplo:
Name: pandas
Version: 1.2.3
Summary: Powerful data structures for data analysis, time series, and statistics
Home-page: http://pandas.pydata.org
Author: None
Author-email: None
License: BSD
Location: /usr/local/lib/python3.7/site-packages
Requires: python-dateutil, pytz, numpy
Required-by:
Si quieres más detalles puedes añadir --verbose.
PIP Freeze
Genera una lista de paquetes instalados y sus versiones (útil para requirements.txt):
pip freeze
Salida de ejemplo:
docutils==0.11
Jinja2==2.7.2
MarkupSafe==0.19
Pygments==1.6
Sphinx==1.2.2
Leer datos desde una URL
A veces queremos leer datos desde una URL (por ejemplo APIs que devuelven JSON). Para eso usamos el paquete requests.
Instálalo con:
pip install requests
En requests veremos métodos y atributos como get(), status_code, headers, text, json():
- get(): solicita una URL y devuelve un objeto Response
- status_code: código HTTP de la respuesta
- headers: cabeceras de la respuesta
- text: contenido en texto
- json(): parsea JSON y devuelve estructuras de Python
Ejemplo leyendo un archivo de texto desde la web:
import requests # importar requests
url = 'https://www.w3.org/TR/PNG/iso_8859-1.txt' # URL con texto
response = requests.get(url) # solicitar URL
print(response)
print(response.status_code) # código de estado, 200 indica éxito
print(response.headers) # cabeceras de la respuesta
print(response.text) # contenido en texto
Ejemplo leyendo una API que devuelve JSON (API de países):
import requests
url = 'https://restcountries.eu/rest/v2/all' # API con información de países
response = requests.get(url)
print(response) # objeto Response
print(response.status_code) # 200 indica éxito
countries = response.json()
print(countries[:1]) # imprimimos el primer país por brevedad
Veamos otro ejemplo con la API del Banco Mundial (datos de Etiopía):
import requests
from pprint import pp # pretty print para mostrar resultados legibles
url = 'http://api.worldbank.org/countries/et?format=json' # API del Banco Mundial para Etiopía
response = requests.get(url)
print(response) # objeto Response
print(response.status_code) # 200 indica éxito
ethiopia_data = response.json()
pp(ethiopia_data) # mostrar datos de forma legible
Crear paquetes
También podemos crear nuestros propios paquetes y subirlos a PyPI. Ejemplo simple: crea un directorio llamado mypackage con un init.py (puede estar vacío) y los siguientes módulos.
# mypackage/arithmetics.py
def add_numbers(*args):
total = 0
for num in args:
total += num
return total
def subtract(a, b):
return (a - b)
def multiple(a, b):
return a * b
def division(a, b):
return a / b
def remainder(a, b):
return a % b
def power(a, b):
return a ** b
# mypackage/greet.py
def greet_person(firstname, lastname):
return f'{firstname} {lastname}, welcome to 30DaysOfPython Challenge!'
init.py no es estrictamente necesario en Python ≥3.3, pero se recomienda para compatibilidad.
Usando el paquete:
from mypackage import arithmetics
print(arithmetics.add_numbers(1, 2, 3, 5))
print(arithmetics.subtract(5, 3))
print(arithmetics.multiple(5, 3))
print(arithmetics.division(5, 3))
print(arithmetics.remainder(5, 3))
print(arithmetics.power(5, 3))
from mypackage import greet
print(greet.greet_person('Juan', 'Pérez'))
Más información sobre paquetes
- Python tiene paquetes y módulos incorporados; otros deben instalarse.
- pip es la herramienta recomendada para instalar y gestionar paquetes desde PyPI.
- Para capturar las dependencias de un proyecto usa pip freeze > requirements.txt.
- Para desinstalar: pip uninstall packagename o pip uninstall -r requirements.txt.
- Virtualenv (y venv) permiten crear entornos aislados:
- Instalar virtualenv: pip install virtualenv
- Crear entornos aislados evita conflictos entre proyectos.
Ejercicios: Día 20
-
Lee sobre entornos virtuales, crea uno e instala al menos un paquete dentro del entorno.
-
Usa una API de países para obtener todos los datos y encuentra los 10 países más poblados.
-
Encuentra todos los países cuyo idioma oficial sea inglés (código 'eng') a partir de los datos de la API.
-
A partir de los datos de la API, encuentra los 10 países con mayor superficie.
-
Encuentra todos los países recién listados (o filtrados según la API) y ordénalos por capital.
🎉 ¡Felicidades! 🎉