Necesitamos encontrar una forma de evitar que nuestro proyecto se rompa cuando movamos de lugar un archivo dentro del proyecto, para esto usaremos Referencias Relativas.
Implementación
Usando PyProjRoot:
import pyprojroot
pyprojroot.here() # Esto es un PosixPath(pathlib)pyprojroot.here().joinpath("data","raw")
El path en pyprojroot se construye desde la raíz, no desde el path del archivo que lo ejecuta.
Puedes mover el archivo a cualquier parte de la carpeta del proyecto, pero los paths no se romperán.
Usando PyHere:
import pyhere
pyhere.here() # También regresa un PosixPath
El directorio que regresa es el directorio padre del directorio actual.
Comparación
Estas dos líneas de código regresan el mismo resultado: