Configuración de Entorno Virtual en Python

Un entorno virtual (o virtual environment) es un espacio aislado donde instalamos las librerías de un proyecto sin afectar a otros ni al sistema operativo. Esto es fundamental porque:

  • Cada proyecto puede tener versiones diferentes de librerías (por ejemplo, un proyecto usa FastAPI 0.109 y otro 0.111).
  • Evitamos conflictos con las librerías instaladas globalmente en Python.
  • Podés compartir el entorno con otros desarrolladores usando un archivo requirements.txt.

Creación de un Entorno Virtual

En la carpeta de tu proyecto (crear la segunda carpeta proyecto2) para practicar el concepto anterior y analizar el contenido creado, ejecutá:

python -m venv .venv

Esto crea una carpeta llamada .venv que contiene:

  • Scripts/: ejecutables (incluye python y pip del entorno).
  • lib/: librerías instaladas solo en este entorno.
  • Archivos de configuración propios del entorno.

Podés cambiar el nombre .venv por otro (ej.: env), pero .venv es un nombre estándar y recomendado.

Activar el Entorno Virtual

Windows (PowerShell o CMD)

.\.venv\Scripts\activate

Instalar Paquetes Dentro del Entorno

Con el entorno activo, podés instalar FastAPI y cualquier dependencia sin afectar al sistema:

pip install fastapi uvicorn

Si luego corrés:

pip list

Vas a ver solo las librerías instaladas en ese entorno, no las globales.

Desactivar el Entorno Virtual

Cuando termines de trabajar, podés salir del entorno ejecutando:

deactivate

La terminal vuelve a la normalidad y cualquier instalación de pip afectará al Python global.

Compartir el Entorno con Otros

Para que otra persona pueda replicar tu entorno, creá un archivo con la lista de dependencias:

pip freeze > requirements.txt

Ejemplo de requirements.txt:

aiohappyeyeballs==2.6.1
aiohttp==3.12.14
aiosignal==1.4.0
annotated-types==0.7.0
anyio==4.9.0
attrs==25.3.0
certifi==2025.7.14
charset-normalizer==3.4.2
chess==1.11.2
click==8.2.1
colorama==0.4.6
contourpy==1.3.1
cycler==0.12.1
distro==1.9.0
fastapi==0.116.1
fonttools==4.56.0
frozenlist==1.7.0
h11==0.16.0
httpcore==1.0.9
httptools==0.6.4
httpx==0.28.1
idna==3.10
jiter==0.10.0
kiwisolver==1.4.8
matplotlib==3.10.1
multidict==6.6.3
numpy==2.2.4
openai==1.97.1
packaging==24.2
pandas==2.3.2
pillow==11.1.0
playsound==1.2.2
propcache==0.3.2
pydantic==2.11.7
pydantic_core==2.33.2
pygame==2.6.1
pyparsing==3.2.2
python-dateutil==2.9.0.post0
python-dotenv==1.1.1
pytz==2025.2
PyYAML==6.0.2
requests==2.32.4
seaborn==0.13.2
simpleaudio==1.0.4
six==1.17.0
sniffio==1.3.1
starlette==0.47.3
tqdm==4.67.1
typing-inspection==0.4.1
typing_extensions==4.14.1
tzdata==2025.2
urllib3==2.5.0
uvicorn==0.35.0
watchfiles==1.1.0
websockets==15.0.1
yarl==1.20.1

Luego, otro desarrollador (o vos mismo en otra compu) puede instalar exactamente esas versiones con:

pip install -r requirements.txt

Alternativas Avanzadas

Además de venv, existen otras opciones para manejar entornos:

  • Poetry: gestor de dependencias más moderno y completo.
  • Pipenv: integración de pip + venv en un solo comando.
  • Conda: usado mucho en data science, crea entornos con Python + librerías nativas (ej. NumPy).

Para este curso, usamos .venv + pip, porque es lo más estándar y simple.

Con esto ya podés crear, activar, desactivar y compartir entornos virtuales de forma profesional.