Objetivo
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 Posix Path (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 Posix Path
- El directorio que regresa es el directorio padre del directorio actual.
Comparación
Estas dos líneas de código regresan el mismo resultado:
pyprojroot.here("data").joinpath("raw")
pyhere.here().resolve() / "data" / "raw"
- Estas dos librerías sirven para crear shortcuts. Para esto, se puede usar la siguiente función:
def make_dir_function(dir_name):
def dir_function(*args):
return pyprojroot.here()joinpath(dir_name, *args)
return dir_function
data_dir = make_dir_function("data")
data_dir("raw", "pathlib")
- Puedes crear la cantidad de shortcuts que tu proyecto necesite.
Contribución creada por: Néstor Arellano.