Subproceso para instalar las librerias en requirements.txt
subprocess.call(['pip', 'install', '-r', 'requirements.txt'])
Plantillas de proyectos para ciencia de datos
¿Qué son y por qué utilizar plantillas de proyectos?
Instalar Cookiecutter
Crear plantillas de proyecto personalizadas
Implementar hooks
Distribuir plantilla de proyecto
Manejo de archivos en Python
Manejo de rutas: problemática
Manejo de rutas del sistema: OS
Manejo de rutas del sistema: Pathlib
Manejo de rutas del sistema: PyFilesystem2
Crear referencias relativas de archivos
Caso práctico
Descarga de plantilla y configuración de ambiente virtual
Utilizar proyecto como un módulo de Python
Flujo de trabajo de los notebooks
Conclusiones
Aplica estas herramientas
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Jesús Vélez Santiago
Los Hooks son sentencias que se van a ejecutar antes o después de generar la plantilla de datos. Por ejemplo, puedes usarlos para verificar el nombre de una carpeta, actualizar git, etc.
Por ejemplo, en “pre_gen_project.py” se puede inicializar git o validar nombres y archivos para evitar errores.
En el archivo “pos_gen_project.py” se puede hacer el primer commit en git o mostrar la finalización de la instalación de dependencias.
Contribución creada por: Néstor Arellano.
Aportes 16
Preguntas 4
Subproceso para instalar las librerias en requirements.txt
subprocess.call(['pip', 'install', '-r', 'requirements.txt'])
A veces las clases saben ser muy overwhelming. Mírenla al día siguiente de nuevo y muchas cosas se aclaran amigos :c
cookiecutter.json code:
{
"project_title": "Cookiecutter Personal",
"project_slug": "{{ cookiecutter.project_title.lower().replace(' ', '_') }}",
"project_description": "Something cool",
"project_author_name": "Your name",
"project_packages": ["All", "Minimal"],
"python_version": "3.7"
}
pre_gen_project.py code:
import os
import sys
project_slug = "{{ cookiecutter.project_slug }}"
ERROR_COLOR = "\x1b[31m" # To change the terminal color
MESSAGE_COLOR = "\x1b[34m"
RESET_ALL = "\x1b[0m"
if project_slug.startswith("x"):
print(f'{ERROR_COLOR}ERROR: {project_slug=} is not a valid name for this template.{RESET_ALL}')
sys.exit(1)
print(f"{MESSAGE_COLOR}Let's do it! You're going to create something awesome!")
print(f"Creating project at { os.getcwd() }{RESET_ALL}")
post_gen_project.py code:
import subprocess
MESSAGE_COLOR = "\x1b[34m"
RESET_ALL = "\x1b[0m"
print(f"{MESSAGE_COLOR}Almost done!")
print(f"Initializing a git repository...{RESET_ALL}")
subprocess.call(['git', 'init'])
subprocess.call(['git', 'add', '*'])
subprocess.call(['git', 'commit', '-m', 'Initial commit'])
print(f"{MESSAGE_COLOR}The beginning of your destiny is defined now! Create and have fun!{RESET_ALL}")
Una abreviación
Dentro de la carpeta hooks pueden usar
touch {pre,post}_gen_project.py
para crear ambos archivos.
Excelente y entendido
Example: Validating template variables
import re
import sys
MODULE_REGEX = r'^[_a-zA-Z][_a-zA-Z0-9]+$'
module_name = '{{ cookiecutter.module_name }}'
if not re.match(MODULE_REGEX, module_name):
print('ERROR: %s is not a valid Python module name!' % module_name)
# exits with status 1 to indicate failure
sys.exit(1)
Por si alguien le llamo la atención lo de los colores como a mi, investigue se llama ANSI code
https://www.lihaoyi.com/post/BuildyourownCommandLinewithANSIescapecodes.html
Sin duda si quisieran mejorar la privacidad, entorno de trabajo, y protección de datos, carpetss personales y no personales de trabajo, este curso puede ser arma principal para mejorar entornos de trabajo, incluso sin duda esta área de entorno de trabajo para ciencia de datos aplica Incluso para sector gobierno, sin importar Incluso nivel, aún así sin duda para mejorar la privacidad pueden usar un sotfware hardware que no se allá Elaborado en ee.uu u.e con fines de protección de soberanía que es la más importante, algunas algunos naciones tendrían que recibir una gran “lección internacional” para mejorar sus Infraestructura, tecnología, y protección en base a sotfware hardware que no son de la otan, por ejemplo brics que ya comienza con estos estas proyectos porque la soberanía es importante y civiles habitantes no tienen porqué estar siendo afectados(as) o estar haciendo trabajo que no les pertenece pero que además ni reciben sueldos salarios de instituciones Incluso de seguridad de soberanía y que sin duda Demuestra la alta corrupción, fallas, Incluso problemas de tecnología, y problemas de falta de apreciación nacional internacional, situación que no tiene porqué afectar a habítantes civiles incluso turistas sin excusas y pretextos. Gran falla internacional.
En fin se de lo que redacto xD.
genial!
Muy buena esa clase, empecé el módulo como con nervios, no entendí casi, pero vamos conociendo el alancé y uff. Me toca aprender buscar librerías tan útiles.
Cuando se ejecute el comando
cookiecutter https://github.com....
Hay que asegurse estar activo en el ambiente virtual,sino dara el siguiente error “cookiecutter no se reconoce como un comando interno o externo”
Estando activo en un ambiente se puede hacer de esta forma :
C:\Users\usuario\Documents\Platzi-cursos\Probando_Cookiecutter
(cookiecutter-personal) λ cookiecutter https://github.com/IvanTolaba/cookiecutter_prueba
estando activo en el ambiente (cookiecutter-personal) ,parado en la carpeta Probando_Cookiecutter ,ejecuto el comando de una plantilla de nombre diferente en github llamada cookiecutter_prueba y lo crea en esa carpeta,funciona !!!
subprocess.call(['conda', 'create', '-n', '{{cookiecutter.environment_name}}'])
subprocess.call(['mamba','env','update','-n','{{cookiecutter.environment_name}}','-f','environment.yml'])
Estuvo muy completo.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?