<< Día 19 | Indice | Día 21 >>
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.
Si aún no tienes pip instalado, instálalo ahora. En la terminal o símbolo del sistema ejecuta:
pip install pipComprueba si pip está instalado con:
pip --versionpip --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.
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 numpyEjemplo 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 pandasEsta 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)Para eliminar un paquete instalado:
pip uninstall packagenamePara listar los paquetes instalados en tu entorno:
pip listPara ver información de un paquete:
pip show packagenameEjemplo:
pip show pandasSalida 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.
Genera una lista de paquetes instalados y sus versiones (útil para requirements.txt):
pip freezeSalida de ejemplo:
docutils==0.11
Jinja2==2.7.2
MarkupSafe==0.19
Pygments==1.6
Sphinx==1.2.2A veces queremos leer datos desde una URL (por ejemplo APIs que devuelven JSON). Para eso usamos el paquete requests.
Instálalo con:
pip install requestsEn 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 textoEjemplo 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 brevedadVeamos 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 legibleTambié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'))- 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.
-
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! 🎉
