Tarde varias horas instalando, eliminando y reinstalando la plantilla y creando el ambiente porque me generaba error el importar el método de "paths", hasta que me rendí y continué con el video y .... debí ver el video antes jajaaj
Suele pasar, jejeje
Jajajajaja a m i me ha pasado tambien tienes razon
Para los que tuvieron problemas con
import final_project.utils.paths as path , se debe a que el archivo .pynb se encuentra en una subcarpeta.
Se puede solucionar moviendo el archivo a la carpeta padre o simplemente agrengando las siguientes lineas antes de llamarlo.
**
import sys
sys.path.append("..")**
Buen aporte, me funcionó.
me funciono moviendo a la carpeta padre muchas gracias
Esta clase me pareció mágica, ahora puedo entender mucho mejor cómo funcionan los módulos y como crearlos de acuerdo a mis necesidades. Excelente curso.
Totalmente de acuerdo!
Definitivamente la mejor clase que he tomado. Tuve que pausar varias veces el video porque cambié el nombre de mi proyecto, pero con los cursos que he tomado antes en Platzi no fue tan difícil. Definitivamente esto ha abierto las puertas a una nueva manera de trabajar.
Como lo hiciste? yo quede perdido con el cambio que hice y me cuesta encontrar la solucion
Hola Jaime, lo que seguramente tienes que hacer es cambiar el nombre final_project por el nombre que le pusiste en esta línea de código
import``final_project.utils.paths ``as`` path
sería algo así
import <nombre>.utils.paths as path
Top Countries function
def top_countries(df, countries, n): top_countries_df =( df
.select_columns(["country_region","value"]).groupby(["country_region"]).aggregate("sum").sort_values("value", ascending=False).reset_index().head(20).transform_column( column_name="country_region",function=lambda x:"red"if x in countries else"lightblue", dest_column_name="color"))return top_countries_df.head(n)
Permite obtener la tabla de paises con su valor y color de acuerdo con el dataframe ingresado countries y el número de elementos n que se quiere visualizar:
Realizado
def latam_grafic(df: pd.DataFrame): sns.barplot( data=df, x="value", y="country_region", palette=df.color) plt.xlabel("Value") plt.ylabel("Country Region") plt.title("Latam countries in a global context"); plt.subplots();
Ejecutar
visualize.latam_grafic(top_countries_df)
No puedo importar los modulos a mi notebook
al ejecutar pip install --editable . me aparece este error:
ERROR: mi ruta, does not appear to be a Python project: neither 'setup,py' nor 'pyproject,toml' found.
alguien sabe como solucionarlo?
usar pip install --editable . simplemente no funcionará si decidimos crearlo en nuestro proyecto, puesto que necesitamos otros tipos de archivos que no se ven en este curso, entre ellos, el setup.py.
Por ello cuando se clona el proyecto, corre todo perfecto porque estos archivos están aquí. En nuestro proyecto, simplemente no funcionará.
Para que funcionen tus funciones en tu notebook, considerando que estan en folders distintos, deben de hacer lo siguiente:
import sys
sys.path.append("../")
suponiendo que el directorio padre se encuentre un nivel arriba. El path debe ser al directorio padre.
¿Podemos usar algún otro módulo para determinar el path?
La respuesta es no, pues los módulos de paths solo son eso, nos muestran el path, estos no importan directamente los módulos o agregan directorios al system path. Por ello se usa sys.path.append()
muchas, gracias llevaba horas trabado y me has ayudado un montón!!!
Me parece importante hacer la mención del archivo
__init__.py en las carpetas.
The __init__.py files are required to make Python treat the directories as containing packages; this is done to prevent directories with a common name, such as string, from unintentionally hiding valid modules that occur later on the module search path. In the simplest case, __init__.py can just be an empty file, but it can also execute initialization code for the package or set the __all__ variable. An example of the __init__.py file:
from math importsinfrom my_package import my_func
Deja tu like aquí para que actualicen el curso.
:D
Para terminar el proyecto, creé esta función, simplemente para variar rápidamente la cantidad de países que se muestren en el dataframe:
deftop_countries_df(num_countries:int=10):return(processed_covid_df
.select_columns(["country_region","value"]).groupby(["country_region"]).aggregate("sum").sort_values("value", ascending=False).reset_index().head(num_countries).transform_column( column_name="country_region", function=lambda x:"red"if x in countries else"lightblue", dest_column_name="color"))
Adicionalmente, en la carpeta visualize, coloqué la función que graficará a los países Top en COVID:
defplot_top_countries(df: pd.DataFrame): sns.barplot( data=df, x="value", y="country_region", palette=df.color
) plt.xlabel("Value") plt.ylabel("Country Region") plt.title("Latam countries in a global context");
Entonces, para llamar a la función que graficaría el dataframe de los países top:
visualize.plot_top_countries(top_countries_df())
Si están trabajando desde WSL y llegan a tener inconvenientes con la clase les recomiendo que trabajen con esta configuración del environment.yml
Y tengan presente reiniciarle kernel del Notebook e incluso el mismo vscode, ya con eso podrán continuar sin problema 😁
No puedo hacer la linea de import final_proyect.utils.paths as path me funcione. no se que estoy haciendo mal, ya intente desinstalando e instalando el ambiente virtual.

Me pasa exactamente lo mismo, ya realicé las acciones indicadas y nada.
Ya pude hacer que funcione, no se si sea la forma mas elegante pero es la que encontré en el internet.
Para ejecutar este codigo se necesita el modulo janitor, el problema es que no es compatible con las versiones mas recientes de numpy, entonces tienes que ir a la terminal donde tienes tu environment activo y ejecutar: pip install numpy==1.25
Esto va a reemplazar la version de numpy para que sea compatible con el modulo janitor.
Espero te sirva,
Un saludo.
En mi caso siempre debo ejecutar: pip install --editable . y la parte del autoreload dentro del notebook. Si únicamente ejecuto pip install --editable . y hago algún cambio en el proyecto, este no se ve reflejado, debo siempre ejecutar la parte del autoreload. En el video (4:15 - 4:31): "pero para eso existe la extensión autoreload...", entendí que era posible usar alguna de las dos mas no ambas. ¿Es esto cierto? Porque he buscado un poco y encontré esto, que confirma lo que entendí del video:
"Once the project is installed in editable mode, users expect that changes to the project python code in the local source tree become effective without the need of a new installation step." (https://peps.python.org/pep-0660/#terminology-and-goals)
Aunque empíricamente he comprobado que no, me gustaría tener esto claro. Gracias.
En cuanto a si es necesario o aconsejable utilizar ambos, depende de tus necesidades y preferencias personales. Si estás trabajando en un proyecto en el que necesitas que los módulos se recarguen automáticamente cuando se realizan cambios, entonces es útil utilizar ambas líneas de código. Sin embargo, si no necesitas esta funcionalidad, no es necesario utilizarlas.
Es importante tener en cuenta que el uso de la recarga automática puede afectar el rendimiento de tu código, especialmente si tienes muchos módulos grandes. Además, ten en cuenta que estas líneas de código son específicas de Jupyter Notebooks o IPython, por lo que no funcionarán en otros entornos de desarrollo.
En resumen, la decisión de utilizar ambas líneas de código o solo una depende de tus necesidades y preferencias personales en cuanto a la recarga automática de módulos.
Para el que le genere error al importar las librerias, coloque antes:
import sys
sys.path.append("..")
No funcionó, puede compartir el código para verlo
Hola, tengo un problema con la importación de las librerias.
Yo estoy utilizando wsl y un ambiente virtual. Creé un archivo requirements.txt para los requerimentos del proyecto.
Ya revisé y efectivamente ya están todas las librerias y paquetes necesarios intalados, por ejemplo el de pyprojroot.
Pero sigue sin funcionar, ya reinicié el kernel y el VScode pero siempre sale el mismo error al importar. ¿Alguno sabe como puedo solucionar esto? . Gracias por leer.