es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Python zipapp con archivos de datos

Creé una aplicación .pyz, aquí está la estructura:

📂 myapp\
  ┣ 📂 templates\
  ┃ ┗ 📄 index.j2\
  ┗ 📄 main.py

En el programa principal tengo esto:

j2_env = jinja2.Environment(loader=jinja2.FileSystemLoader('templates'), trim_blocks=True)
st = j2_env.get_template('index.j2').render()

Cuando intento ejecutar el programa, recibo el siguiente error: jinja2.exceptions.TemplateNotFound: index.j2

¿Cómo puedo acceder al directorio de plantillas dentro de zipapp? Funciona perfectamente utilizando un archivo .py fuera del paquete.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para acceder al directorio de plantillas dentro de la zipapp, debes modificar el argumento del cargador en la inicialización del entorno jinja2.

    Puedes reemplazar la línea de código actual:

    j2_env = jinja2.Environment(loader=jinja2.FileSystemLoader('templates'), trim_blocks=True)
    

    con esta:

    j2_env = jinja2.Environment(loader=jinja2.PackageLoader('myapp', 'templates'), trim_blocks=True)
    

    Esto cargará las plantillas desde el directorio de plantillas ubicado en el paquete ‘myapp’.

Comments are closed.