Python 101 (env, tools and Poetry)
TL;DR
Stack a usar:
- python -> lenguaje e intérprete
- py -> python launcher para windows
- pipx -> instalar tools python globales
- .env -> variables de entorno local; UAT y PROD usar config de donde se despliegue
- pyenv -> gestor de versiones de Python
- poetry -> gestor de proyecto. Abstrae
pipy sustituyevenvyrequeriments.txt. Detalles de como usar poetry aquí <- TODO: linkear a post
No usar pero si conocer:
- pip -> gestor de paquetes - incluye uso de
requirements.txt(sustituir por poetry) - pip3 -> No usarlo. Leftover histórico de cuando python2 y python3 convivian hasta el 2020
- venv -> entornos virtuales para aislamiento (sustituir por poetry)
- conda -> package y environment manager para data science & ML
Stack a usar
Python (lenguaje/intérprete)
Pythoncomo tal es el lenguaje y el intérprete. Es un lenguaje interpretado (no compilado) sobre una MV propia. Python por sí mismo no gestiona dependencias ni aislamiento.
Python. Solo. Ejecuta. Código.
(py) python en Windows
Python no es un único ejecutable, puedes tener varios intérpretes instalados a la vez. El caos normalmente viene a que cada uno es una versión distinta, con librerías distintas y sus propios paths.
python.exe
python3.exe
py.exe
Si usas lo que hace el sistema es buscar python en $PATH y usar el primero que encuentre
python main.py
En windows usar siempre py. Está diseñado para gestionar múltiples versiones de Python en windows.
py # lanza la version por defecto. Normalmente el último Python3 instalado
py -3.11
py -0p # muy útil para debuggear todas las instalaciones detectadas
No usar python y py indistintamente
No se puede usar indistintamente python y py ya que son comandos diferentes.
# DON'T DO THIS
python -m venv .venv
.venv/Scripts/activate
pip install fastapi
py main.py # puede ignorar el .venv activado y lanzar un python global distinto