Arksine / moonraker

Web API Server for Klipper
https://moonraker.readthedocs.io
GNU General Public License v3.0
1.02k stars 392 forks source link

After upgrade moonraker is broken - Unable to load component (template). Caused by jinja #875

Closed alekc closed 2 weeks ago

alekc commented 2 weeks ago

What happened

Upgraded moonraker to the latest version today, and it's not starting up anymore. Looking into logs it shows AttributeError: module 'jinja2' has no attribute 'Environment'

Client

Mainsail

Browser

Other or N/A

How to reproduce

not sure, happened after upgrade

Additional information

Jun 21 10:18:47 mainsailos python[3478]: #################################################################
Jun 21 10:18:47 mainsailos python[3478]: [server.py:load_component()] - Component (secrets) loaded
Jun 21 10:18:47 mainsailos python[3478]: [server.py:load_component()] - Unable to load component: (template)
Jun 21 10:18:47 mainsailos python[3478]: Traceback (most recent call last):
Jun 21 10:18:47 mainsailos python[3478]:   File "/home/pi/moonraker/moonraker/server.py", line 297, in load_component
Jun 21 10:18:47 mainsailos python[3478]:     component = load_func(config)
Jun 21 10:18:47 mainsailos python[3478]:   File "/home/pi/moonraker/moonraker/components/template.py", line 112, in load_component
Jun 21 10:18:47 mainsailos python[3478]:     return TemplateFactory(config)
Jun 21 10:18:47 mainsailos python[3478]:   File "/home/pi/moonraker/moonraker/components/template.py", line 29, in __init__
Jun 21 10:18:47 mainsailos python[3478]:     self.jenv = jinja2.Environment('{%', '%}', '{', '}')
Jun 21 10:18:47 mainsailos python[3478]: AttributeError: module 'jinja2' has no attribute 'Environment'
Jun 21 10:18:47 mainsailos python[3478]: [server.py:load_component()] - Unable to load component: (klippy_connection)
Jun 21 10:18:47 mainsailos python[3478]: Traceback (most recent call last):
Jun 21 10:18:47 mainsailos python[3478]:   File "/home/pi/moonraker/moonraker/confighelper.py", line 414, in gettemplate
Jun 21 10:18:47 mainsailos python[3478]:     template: TemplateFactory = self.server.load_component(self, 'template')
Jun 21 10:18:47 mainsailos python[3478]:   File "/home/pi/moonraker/moonraker/server.py", line 297, in load_component
Jun 21 10:18:47 mainsailos python[3478]:     component = load_func(config)
Jun 21 10:18:47 mainsailos python[3478]:   File "/home/pi/moonraker/moonraker/components/template.py", line 112, in load_component
Jun 21 10:18:47 mainsailos python[3478]:     return TemplateFactory(config)
Jun 21 10:18:47 mainsailos python[3478]:   File "/home/pi/moonraker/moonraker/components/template.py", line 29, in __init__
Jun 21 10:18:47 mainsailos python[3478]:     self.jenv = jinja2.Environment('{%', '%}', '{', '}')
Jun 21 10:18:47 mainsailos python[3478]: AttributeError: module 'jinja2' has no attribute 'Environment'
Jun 21 10:18:47 mainsailos python[3478]: During handling of the above exception, another exception occurred:
Jun 21 10:18:47 mainsailos python[3478]: Traceback (most recent call last):
Jun 21 10:18:47 mainsailos python[3478]:   File "/home/pi/moonraker/moonraker/server.py", line 297, in load_component
Jun 21 10:18:47 mainsailos python[3478]:     component = load_func(config)
Jun 21 10:18:47 mainsailos python[3478]:   File "/home/pi/moonraker/moonraker/components/klippy_connection.py", line 816, in load_component
Jun 21 10:18:47 mainsailos python[3478]:     return KlippyConnection(config)
Jun 21 10:18:47 mainsailos python[3478]:   File "/home/pi/moonraker/moonraker/components/klippy_connection.py", line 68, in __init__
Jun 21 10:18:47 mainsailos python[3478]:     "klippy_uds_address", pathlib.Path("/tmp/klippy_uds")
Jun 21 10:18:47 mainsailos python[3478]:   File "/home/pi/moonraker/moonraker/confighelper.py", line 445, in getpath
Jun 21 10:18:47 mainsailos python[3478]:     val = self.gettemplate(option, default, deprecate=deprecate)
Jun 21 10:18:47 mainsailos python[3478]:   File "/home/pi/moonraker/moonraker/confighelper.py", line 417, in gettemplate
Jun 21 10:18:47 mainsailos python[3478]:     f"Section [{self.section}], option '{option}': "
Jun 21 10:18:47 mainsailos python[3478]: moonraker.confighelper.ConfigError: Section [server], option 'klippy_uds_address': Failed to load 'template' component.
Jun 21 10:18:47 mainsailos python[3478]: [server.py:main()] - Server Config Error
Jun 21 10:18:47 mainsailos python[3478]: Traceback (most recent call last):
Jun 21 10:18:47 mainsailos python[3478]:   File "/home/pi/moonraker/moonraker/confighelper.py", line 414, in gettemplate
Jun 21 10:18:47 mainsailos python[3478]:     template: TemplateFactory = self.server.load_component(self, 'template')
Jun 21 10:18:47 mainsailos python[3478]:   File "/home/pi/moonraker/moonraker/server.py", line 297, in load_component
Jun 21 10:18:47 mainsailos python[3478]:     component = load_func(config)
Jun 21 10:18:47 mainsailos python[3478]:   File "/home/pi/moonraker/moonraker/components/template.py", line 112, in load_component
Jun 21 10:18:47 mainsailos python[3478]:     return TemplateFactory(config)
Jun 21 10:18:47 mainsailos python[3478]:   File "/home/pi/moonraker/moonraker/components/template.py", line 29, in __init__
Jun 21 10:18:47 mainsailos python[3478]:     self.jenv = jinja2.Environment('{%', '%}', '{', '}')
Jun 21 10:18:47 mainsailos python[3478]: AttributeError: module 'jinja2' has no attribute 'Environment'
Jun 21 10:18:47 mainsailos python[3478]: During handling of the above exception, another exception occurred:
Jun 21 10:18:47 mainsailos python[3478]: Traceback (most recent call last):
Jun 21 10:18:47 mainsailos python[3478]:   File "/home/pi/moonraker/moonraker/server.py", line 661, in main
Jun 21 10:18:47 mainsailos python[3478]:     server = Server(app_args, log_manager, event_loop)
Jun 21 10:18:47 mainsailos python[3478]:   File "/home/pi/moonraker/moonraker/server.py", line 101, in __init__
Jun 21 10:18:47 mainsailos python[3478]:     self.klippy_connection = self.load_component(config, "klippy_connection")
Jun 21 10:18:47 mainsailos python[3478]:   File "/home/pi/moonraker/moonraker/server.py", line 297, in load_component
Jun 21 10:18:47 mainsailos python[3478]:     component = load_func(config)
Jun 21 10:18:47 mainsailos python[3478]:   File "/home/pi/moonraker/moonraker/components/klippy_connection.py", line 816, in load_component
Jun 21 10:18:47 mainsailos python[3478]:     return KlippyConnection(config)
Jun 21 10:18:47 mainsailos python[3478]:   File "/home/pi/moonraker/moonraker/components/klippy_connection.py", line 68, in __init__
Jun 21 10:18:47 mainsailos python[3478]:     "klippy_uds_address", pathlib.Path("/tmp/klippy_uds")
Jun 21 10:18:47 mainsailos python[3478]:   File "/home/pi/moonraker/moonraker/confighelper.py", line 445, in getpath
Jun 21 10:18:47 mainsailos python[3478]:     val = self.gettemplate(option, default, deprecate=deprecate)
Jun 21 10:18:47 mainsailos python[3478]:   File "/home/pi/moonraker/moonraker/confighelper.py", line 417, in gettemplate
Jun 21 10:18:47 mainsailos python[3478]:     f"Section [{self.section}], option '{option}': "
Jun 21 10:18:47 mainsailos python[3478]: moonraker.confighelper.ConfigError: Section [server], option 'klippy_uds_address': Failed to load 'template' component.
Jun 21 10:18:47 mainsailos python[3478]: [server.py:main()] - Server Shutdown
Jun 21 10:18:47 mainsailos systemd[1]: moonraker.service: Main process exited, code=exited, status=1/FAILURE
Jun 21 10:18:47 mainsailos systemd[1]: moonraker.service: Failed with result 'exit-code'.
alekc commented 2 weeks ago

Found the issue. By the looks of it, something went wrong during the installation of jinja, resulting in 0 length files.

total 12
drwxr-xr-x  3 pi pi 4096 Jun 21 09:51 .
drwxr-xr-x 81 pi pi 4096 Jun 21 10:36 ..
-rw-r--r--  1 pi pi    0 Jun 21 09:51 async_utils.py
-rw-r--r--  1 pi pi    0 Jun 21 09:51 bccache.py
-rw-r--r--  1 pi pi    0 Jun 21 09:51 compiler.py
-rw-r--r--  1 pi pi    0 Jun 21 09:51 constants.py
-rw-r--r--  1 pi pi    0 Jun 21 09:51 debug.py
-rw-r--r--  1 pi pi    0 Jun 21 09:51 defaults.py
-rw-r--r--  1 pi pi    0 Jun 21 09:51 environment.py
-rw-r--r--  1 pi pi    0 Jun 21 09:51 exceptions.py
-rw-r--r--  1 pi pi    0 Jun 21 09:51 ext.py
-rw-r--r--  1 pi pi    0 Jun 21 09:51 filters.py
-rw-r--r--  1 pi pi    0 Jun 21 09:51 _identifier.py
-rw-r--r--  1 pi pi    0 Jun 21 09:51 idtracking.py
-rw-r--r--  1 pi pi    0 Jun 21 09:51 __init__.py
-rw-r--r--  1 pi pi    0 Jun 21 09:51 lexer.py
-rw-r--r--  1 pi pi    0 Jun 21 09:51 loaders.py
-rw-r--r--  1 pi pi    0 Jun 21 09:51 meta.py
-rw-r--r--  1 pi pi    0 Jun 21 09:51 nativetypes.py
-rw-r--r--  1 pi pi    0 Jun 21 09:51 nodes.py
-rw-r--r--  1 pi pi    0 Jun 21 09:51 optimizer.py
-rw-r--r--  1 pi pi    0 Jun 21 09:51 parser.py
drwxr-xr-x  2 pi pi 4096 Jun 21 09:27 __pycache__
-rw-r--r--  1 pi pi    0 Jun 21 09:51 py.typed
-rw-r--r--  1 pi pi    0 Jun 21 09:51 runtime.py
-rw-r--r--  1 pi pi    0 Jun 21 09:51 sandbox.py
-rw-r--r--  1 pi pi    0 Jun 21 09:51 tests.py
-rw-r--r--  1 pi pi    0 Jun 21 09:51 utils.py
-rw-r--r--  1 pi pi    0 Jun 21 09:51 visitor.py

Solved by running

/home/pi/moonraker-env/bin/python -m pip install --force-reinstall .