Curso Profesional de Python

Curso Profesional de Python

Facundo García Martoni

Facundo García Martoni

Cómo organizar las carpetas de tus proyectos

3/21
Recursos

Aportes 35

Preguntas 6

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

📁Un módulo es cualquier archivo de Python. Generalmente, contiene código que puedes reutilizar.

🗄 Un paquete es un conjunto de módulos. Siempre posee el archivo __init__.py.
Una ejemplo de organizar los archivos de 🐍Python es de la siguiente manera.

🐍 __init __.py
When a new object is made, it is initialized by calling the init method on the object.

__init__ 

is pronounced “dunder init”: dunder is short for “double-underscore”.

Si están usando WSL o una terminal Unix, pueden instalar con sudo apt-get install tree para ver un árbol de sus carpetas.
Luego puedo ingresar a la carpeta de mi proyecto y ejecutar el comando tree.

Se vería algo así:

Yo pongo tree -I venv para ignorar la carpeta venv que esta llena de cosas. Si no lo pongo verás todos los directorios de tu proyecto.

El diccionario define a un módulo como cualquier archivo de python con código que se pueda reutilizar… que se pueda reutilizar.

Si haz seguido la rama de cursos sugerida y ya pasaste por el curso de git/github, así como las entregas anteriores de Facundo, sin querer haz aprobado un curso que va tras bambalinas, que es el orden sugerido para el manejo de tus proyectos.
Personalmente me ha servido mucho porque he aplicado esa metodología para ordenar los cursos del reto de DataAcademy y muchos mas, aún fuera de uso de python, como los cursos de SQL y esto hace que como profesionista, tenga una costumbre funcional y un orden general en mis proyectos.
Esta clase deja ver la maravilla que es Platzi como plataforma de educación en la que los cursos se entrelazan en temas que quizá no son tan relevantes o no forman parte del foco del proyecto, pero que dan un plus a nuestro trabajo y a nuestro estilo profesional. Enhorabuena!

Que yo sepa la carpeta venv (que en realidad es un entorno virtual) por lo regular va en el .gitignore y en vez de la carpeta va un requirements.txt, donde la persona que descargue el proyecto puede hacer su propio entorno virtual (ya que aveces no es compatible con otros equipos), con su propia versión de Python, las dependencias necesarias e incluso sus propias versiones de las dependencias.

How to organize your proyect folders

To make this thema more simple Facundo introduces two concepts:

  • modules: A module is any python file, usually this is reusable in other python files, for example a function created to reuse.

  • packages: A package is a folder that contain many modules. In this folder, always there is _init.py, it’s necessary to the package.

package:
 - module_1
 - module_2
 - module_3
 - module_n
 all modules are relationized to the __init__

Example of directory project:

  • README

  • .gitignore

  • venve

  • package:

    • init.py
    • module_1.py
    • module_2.py
  • README: an explanation over our proyect, normally use a .md format.

  • .gitignore: file to ignore other files at the time to run.

  • venve: this is the folder with the envioment variables.

Frameworks: Set of rules to the app run. They have them folders…

Módulo en Python

Un módulo puede contener:

  • Funciones
  • Clases
  • Variables
  • Código ejecutable
  • Atributos asociados con el módulos

El nombre del módulo es el nombre del archivo (sin la extensión .py).

Por ejemplo, en el siguiente diagrama la función printer y la clase Shape están definidas en el módulo utils.

Paquete en Python

Un paquete en Python es un directorio que contiene uno o más módulos de Python.

El archivo opcional “init.py” puede contener código que se ejecuta cuando un módulo se importa del paquete (inicialización).
Según la documentación:

Los archivos init.py son necesarios para que Python trate los directorios que contienen el archivo como paquetes. Esto evita que los directorios con un nombre común, como una cadena, oculten involuntariamente módulos válidos que aparecen más adelante en la ruta de búsqueda del módulo. En el caso más simple, init.py puede ser simplemente un archivo vacío, pero también puede ejecutar el código de inicialización del paquete o establecer la variable all, que se describe más adelante.
(https://docs.python.org/3/tutorial/modules.html#packages)

0.1 ¿Cómo organizar las carpetas de tus proyectos?

Glosario

Módulo

Un módulo es cualquier archivo que termine con la extensión .py.

  • Generalmente un módulo tiene archivos que se pueden reutilizar

Paquete

Un paquete es un conjunto de módulos. init.py es el archivo que se usa para inicializar un paquete. Esto denota que una carpeta es un paquete.

Así se vería la carpeta de un proyecto (Explicado con indentación):

Proyecto:
    README.md
    .gitignore
    venv
    proyecto:
        __init__.py
        nave.py
        destino.py
        plataforma.py
        lanzamiento.py
        test.py
        validación.py
  • R E A D M E . m d: Explica como funciona el proyecto, github y gitlab lo toman para explicarle a otros desarrolladores como trabajar con él
  • .gi t i g n o re: Es un archivo que se usa para ignorar todos los archivos que no queremos que se suban a un repositorio remoto
  • ve n v todos los módulos que se usan para trabajar en el proyecto
  • El paquete del proyecto:
    *Componentes del proyecto

Cómo organizar las carpetas de tus proyectos

Es importante comprender dos conceptos:

  • Módulo: Es cualquier archivo de Python. Generalmente, contiene código que puedes reutilizar 😃.
  • Paquete: Un paquete es una carpeta que contiene un conjunto de módulos. Siempre posee el archivo __init__.py. Estos módulos están relacionados.

Un orden común de proyectos:

- exploracion_espacial_proyecto.
    - README
    - .gitignore
    - venv
    - exploración espacial
        - `__init__.py`
        - nave.py
        - destino.py
        - tests.py

Sin embargo, en cada proyecto puede ser diferente dependiendo de lo que se esté haciendo, ya que, por ejemplo, podrías usar algún *framework.*🤯

una explicación sobre nuestro proyecto, normalmente usamos un formato .md.
.gitignore: archivo para ignorar otros archivos en el momento de ejecutar.
venve: esta es la carpeta con las variables de entorno.
Frameworks: Conjunto de reglas para la ejecución de la aplicación. Las tienen carpetas.

Como Organizar las Carpetas de tus Proyectos

Las carpetas se organizan por Paquetes y Módulos, estos últimos son cualquier archivo de Python. Generalmente, contiene código que puedes reutilizar

Un Paquete es una carpeta que contiene módulos. Siempre posee el archivo init.py

Cómo organizar las carpetas de tus proyectos

<h5>Módulo</h5>

Un módulo es cualquier archivo de Python (o sea que termina con .py). Generalmente, contiene código que puedes reutilizar.

<h5>Paquete</h5>

Una carpeta que contiene módulos. Siempre posee el archivo __init__.py. (Se lee dunder init doy py).

Paquetes
Módulo Módulo
Módulo Módulo
Módulo Módulo
exploracion_espacial
nave.py destino.py
plataforma.py lanzamiento.py
tests.py validacion.py

Estructura de proyecto:

  • README -> Explica cómo funciona el proyecto
  • .gitignore -> Cosas que no se subirán al repo
  • venv -> entorno virtual de Python
  • exploracion_espacial -> Paquete, dentro de él, los módulos
    • __init__.py
    • nave.py
    • destino.py
    • plataforma.py
    • lanzamiento.py
    • tests.py
    • validacion.py

Esta regla no está tallada en piedra. Depende del proyecto y el Framework que uses.

Package
Set of modules that work together. Contain a file init.py
**Module
**Any code that we can reuse.

A seguir aprendiendo. Importante el orden

Gracias profesor Facundo por escuchar mi petición e incluir esta clase.

  • Un módulo es un archivo de python, con código que se puede reutilizar.
  • Un paquete es una carpeta que contiene varios módulos, y posee el archivo __init__.py,

Mientras podemos tener tests para python y cuando terminen el curso, pueden ir a:

TAU Pytest

Es super explicativo y te ayuda a mejorar tus skills en inglés.

-Facundo en clases pasadas había dicho que Módulo: Es código creado por personas que nos sirve a nostros para reutilizarlo.

Módulos

  • Un módulo es un archivo de Python cuyos objetos (funciones, clases, excepciones, etc.) pueden ser accedidos desde otro archivo. Se trata simplemente de una forma de organizar grandes códigos.

Paquetes

  • Un paquete es una carpeta que contiene varios módulos.

Muy buen curso…

Cómo organizar las carpetas de tu proyecto
Para simplificar este tema en dos conceptos:

módulos: Un módulo es cualquier archivo de Python, generalmente esto es reutilizable en otros archivos de Python, por ejemplo, una función creada para reutilizar.

paquetes: un paquete es una carpeta que contiene muchos módulos. En esta carpeta, siempre hay _init.py, es necesario para el paquete.

Ejemplo de proyecto de directorio:
README
.gitignore
venve
paquete:
•	init.py
•	module_1.py
•	module_2.py

como organizar los archivos

  • Módulos : Cualquier archivo que contiene código que se puede reutilizar.

  • Paquete : Es una carpeta que contiene un conjunto de módulos. con la característica que debe tener el archivo init.py que es dunder init (dunder abreviatura de doble subrayado)

Como se organizan los proyectos

  • Modulo: cualquier archivo de python (generalmente contiene código)

  • Paquete: Conjunto de modulos (carpeta que contiene modulo)

    el archivo simboliza que es un paquete __init__.py

depende la especialidad se organizan de manera distinta

# organizacion de proyectos
exploracion_espacial_proyecto
- README
- .gitignore
- venv
- exploracion_espacial
	-__init__.py
	-nave.py
	-destino.py
	-plataforma.py
	-test.py
	-validacion.py
	-lanzamiento.py

Brutal ya comprendí que es un modulo y que es un paquete. Gracias

Excelente explicación, difícilmente se encuentran estas claves básicas en cursos virtuales cuando estas empezando en el mundo del desarrollo. Gracias Profesor.

dunder = Double UNDERscored

Tema 2 en el modulo 1:
Como organizar mis archivos en python.
Para poder entender como organizar los archivos en python es necesario conocer la diferencia entre un paquete y un modulo.
Porque si no se entiende, podria mezclar todo en un solo lugar y la idea es tener un codigo limpio, un repositorio, y librería limpia.
Entonces, que es un Modulo:
Definicion tecnica: Cualquier archivo de python que contienen codigos, generalmente son reutilizables.
Un modulo son archivos, todos los archivos que terminan en .py son modulos, estos modulos tienen informacion, lineas de codigo para poder ejecurar el programa.
Digamos por ejemplo:
Estamos apreniendo ingles.
Entonces tienes que aprender unos modulos que te ayudan a ejecutar el idioma.
Digamos modulos como:
Pronunciacion, Escritura, Gramatica, slangs, modismos, etc.
Entonces, todos modulos terminan con extension .eng que significa ingles.
Que es un paquete:
Definicion Tecnica:Carpeta que contiene modulos que estan relacionados para poder importarlos en otro archivo.
Un paquete no es mas que una carpeta que contiene todos los modulos del idioma ingles.
Python identifica un paquete(carpeta) cuando tiene un archivo init.py.
Lectura en la comunidad:" (Dander "init)
"
Entonces yo tengo un paquete(carpeta) init.py
Hay un modulo que no se puede obviar dentro de nuestro proyecto que es testspy(es importantisisismo).
Ademas. Dentro de mi proyecto debo crear varios archivos:

  • Uno que es tipo .txt que se llama README:
    Este archivo lo que contiene son las reglas, instruciones de como usar el programa.
  • .gitignore:
    Este archivo ignora archivos que no se envian a git hub en el momento de hacer un pull.
    Cabe decir que estos archivos, carpetas se escriben dentro del archivo.
  • Venv:
    Es el virtual enviroment donde ingreso todos los modulos que necesito para poder ejecutar mi proyecto, modulos como pandas, numpy(ciencia de datos).
    Luego se crea una carpeta que es mi proyecto y en el todos los modulos(archivos) que necesito para poder ejecutar mi proyecto. Cabe destacar que dentro de esta carpeta se debe crear un archivo. “init.py”

Recomiendo usar el navegador de Firefox Developer edition. es buenisimo para tomar screenshots de solo una zona de la pag que estas. muy bueno para tener las laminas de los cursos

Organizacion de archivos en proyectos

Modulos

Un modulo es cualquier archivo de python, generalmente contiene codigo que se puede reutilizar

  • Random
  • Math
  • Numpy

Paquete

Conjunto de modulos, una carpeta que contiene modulos, siempre posee el archvio _init _.py este archivo denota que una carpeta es un paquete

Estructura general

Esta es la estructura general, varia por ramas de la industria

  • README Explica a los demas que onda con el proyecto
  • .gitignore Permite ignorar archivos
  • venv El ambiente virtual, tambien suele incluir requirements.txt
  • nombre_paquete
    • archivo init
    • demas archivos

De manera profesional y para compartir es bueno poner el archivo requeriments.txt

Un módulo: es un archivo de Python, con código que se puede reutilizar.
Un paquete: es una carpeta que contiene módulos, siempre posee el archivo init.py
La organización de la carpeta exploracion_espacial_proyecto se vería así:

  • README: explica como funciona el proyecto, las apps Github y Gitlab lo utilizan explicarle a otros desarrolladores como se debe trabajar en el proyecto

  • .gitignore: archivo que permite ignorar en el sistema de control de versiones las cosas que no necesitamos subir a un repositorio.

  • venv: carpeta de nuestro entorno virtual. Acompañada de requeriment.txt en donde están los módulos que otros desarrolladores deberían instalar para poder correr el proyecto

  • El paquete exploracion_espacial en donde se encuentran los módulos:

    • __ init __.py: este archivo denota que es un paquete.
    • nave .py
    • destino .py
    • plataforma .py
    • lanzamiento .py
    • test .py
    • validacion .py

Se veria asi…

  • Exploracion_espacial_proyecto carpeta
    • README (explica como funciona el proyecto, usado por Github/Gitlab para explicar como se trabaja en el proyecto)
    • .gitignore (nos permite ignorar las cosas que no necesitamos subir)
    • venv (carpeta de nuestro entorno virtual, suele ir acompañada de requeriment.txt que nos dice que modulos debemos instalar)
    • exploracion_espacial paquete
      • __ init __.py (denota que es un paquete)
      • nave .py modulo
      • destino .py modulo
      • plataforma .py modulo
      • lanzamiento .py modulo
      • test .py modulo
      • validacion .py modulo

En cada especialidad DS o Backend, te encontras con Frameworks, que nos indica un conjunto de reglas y modulos para que una app funcione. Dentro de Framwork tenes diferentes carpetas con sus propias reglas. Ej: en backend vas a trabajar con Django, Flask, FastAPI cada uno de estos tiene una estructura de carpetas propuesta

Recomiendo este curso que usa Cookie cutter para estructurar tus proyectos con un framework que podes personalizar. Clases del Curso de Configuración Profesional de Entorno de Trabajo para Ciencia de Datos