Bienvenido a ClearNote Py DA, una plantilla reproducible, ligera y portable para proyectos de análisis de datos en Python usando Visual Studio Code + Dev Containers + Docker + uv.
Esta plantilla está pensada para trabajar con un entorno aislado y consistente, sin depender de instalaciones manuales en el sistema anfitrión.
Esta plantilla está diseñada para:
- Ejecutar proyectos de análisis de datos sin instalar dependencias directamente en tu máquina
- Trabajar con archivos
.pyy.ipynbde forma interactiva - Mantener un entorno reproducible usando Docker y Dev Containers
- Gestionar dependencias con uv, un gestor moderno y rápido para proyectos Python
- Facilitar la transición desde un flujo clásico con
requirements.txthacia uno más moderno conpyproject.toml+uv.lock - Reducir problemas de permisos en carpetas sincronizadas o montadas desde el host
- Imagen base:
python:3.14.5-slim-bookworm - Paquetes del sistema:
build-essentialca-certificates
- Gestor de paquetes/proyectos:
uv - Versión fijada:
0.11.13 - Instalación de uv: copiado desde la imagen oficial de Astral
- Entorno virtual del proyecto:
.venv/
- Editor principal: Visual Studio Code
- Extensiones preconfiguradas:
- Python
- Pylance
- Ruff
- Jupyter
- Better TOML
- GitHub Copilot
- Path Intellisense
- Material Icon Theme
La plantilla apunta automáticamente al intérprete dentro del entorno virtual:
${workspaceFolder}/.venv/bin/pythonCuando el contenedor se crea por primera vez, el postCreateCommand detecta automáticamente el tipo de proyecto y actúa en consecuencia:
- Si también existe
uv.lock:- ejecuta
uv sync --locked
- ejecuta
- Si no existe
uv.lock:- ejecuta
uv lock && uv sync
- ejecuta
- ejecuta
uv init --no-package --no-workspace . - elimina el archivo
main.pygenerado por defecto - importa dependencias desde
requirements.txtcon:uv add -r requirements.txt
- el proceso falla y muestra un mensaje indicando que falta
pyproject.tomlorequirements.txt
Esta plantilla adopta un enfoque de transición en dos etapas:
Ideal para proyectos existentes que todavía no migran por completo a pyproject.toml.
Permite:
- seguir usando la estructura tradicional
- empezar a trabajar con
uv - crear la base para migrar a lockfiles reproducibles
Recomendada para nuevos proyectos o para consolidar entornos reproducibles.
Ventajas:
- mejor manejo de dependencias
- lockfile reproducible
- flujo más moderno y mantenible
- integración más natural con tooling actual de Python
cd tu_ruta/
git clone https://github.com/ClearNote97/ClearNote_Py_DA.git
cd ClearNote_Py_DASi quieres usar esta plantilla como base para un proyecto nuevo:
rm -rf .gitLuego renombra la carpeta:
cd ..
mv ClearNote_Py_DA nuevo_nombre
cd nuevo_nombreInicializa tu nuevo repositorio:
git init
git add .
git commit -m "Proyecto inicial basado en plantilla ClearNote Py DA"Y conecta tu propio repositorio si lo deseas:
git remote add origin https://github.com/tu_usuario/tu_repositorio.git
git push -u origin mainCuando VS Code detecte la configuración, selecciona:
Reopen in Container
Durante la creación del contenedor, la plantilla:
- instala
uv - detecta si trabajas con
pyproject.tomlorequirements.txt - prepara el entorno virtual
.venv - instala o sincroniza dependencias
No necesitas correr pip install manualmente.
| Tarea | Disponible ✅ |
|---|---|
Ejecutar scripts .py |
✅ |
Usar notebooks .ipynb |
✅ |
| Ejecutar código por bloques | ✅ |
| Formatear código automáticamente con Ruff | ✅ |
| Organizar imports | ✅ |
| Hacer análisis reproducibles | ✅ |
| Depurar scripts con breakpoints | ✅ |
Gestionar dependencias con uv |
✅ |
| Trabajar dentro de contenedor aislado | ✅ |
La plantilla viene preparada para usar Ruff como formateador y herramienta de acciones sobre guardado.
Se usa:
"python.analysis.typeCheckingMode": "basic"Se usa automáticamente el Python del entorno virtual .venv.
uv reemplaza el uso tradicional de pip como comando principal del flujo de trabajo.
- mayor velocidad
- manejo moderno de dependencias
- lockfiles reproducibles
- integración con proyectos Python actuales
- mejor experiencia dentro de contenedores reproducibles
Aunque la imagen base de Python pueda traer pip instalado internamente, esta plantilla no lo usa como herramienta de trabajo. Toda la gestión del entorno y dependencias se realiza con uv.
README.md.devcontainer/devcontainer.json.devcontainer/Dockerfilerequirements.txtopyproject.tomluv.lockcuando exista
.venv/__pycache__/*.pyc.env
Un .gitignore mínimo recomendado sería:
.env
__pycache__/
*.pyc
.venv/- Si vas a mantener esta plantilla como base reproducible, documenta claramente en cada proyecto si estás en modo:
requirements.txt- o
pyproject.toml + uv.lock
- Si ya migraste a
uv.lock, consérvalo en el repositorio - Si usas notebooks o ejecución interactiva, valida que
ipykernelesté incluido dentro de tus dependencias del proyecto
Distribuido bajo la licencia MIT. Puedes copiar, modificar y reutilizar libremente esta plantilla.
MSc. Nicolás Enrique Valencia Santiago
Este README.md está pensado como base y debe adaptarse según el tipo de proyecto que se construya a partir de esta plantilla.