motioneye-project / motioneye

A web frontend for the motion daemon.
GNU General Public License v3.0
3.99k stars 655 forks source link

Install on Raspbian 12? #2957

Open bomblord opened 7 months ago

bomblord commented 7 months ago

I have a new install headless Raspberry Pi OS setup on a Pi 4 "Debian GNU/Linux 12 (bookworm)"

When attempting to follow the following instructions at https://github.com/motioneye-project/motioneye/wiki/Install-on-Raspbian-Bullseye (which is the latest install instructions available) the system service fails to run. The error I've found in journalctl -u motioneye.service seems to point to the issue being a problem with not using pip2 based on an extremely old post here https://github.com/motioneye-project/motioneye/issues/1048

However Pip2/Python 2.7 is no longer supported or installable. I tried to upgrade using sudo pip install motioneye --break-system-packages --upgrade motioneye==0.42.1 but the service still will not start with the same error.

Since 0.43.1b1 specifically mentions python 3 support I also attempted that which changes the error but still does not resolve the issue. Apr 05 14:32:51 raspberrypi systemd[1]: Started motioneye.service - motionEye Server. Apr 05 14:32:51 raspberrypi meyectl[795]: Traceback (most recent call last): Apr 05 14:32:51 raspberrypi meyectl[795]: File "/usr/local/bin/meyectl", line 5, in <module> Apr 05 14:32:51 raspberrypi meyectl[795]: from motioneye.meyectl import main Apr 05 14:32:51 raspberrypi meyectl[795]: File "/usr/local/lib/python3.11/dist-packages/motioneye/meyectl.py", line 29, in <module> Apr 05 14:32:51 raspberrypi meyectl[795]: from motioneye import config, settings Apr 05 14:32:51 raspberrypi meyectl[795]: File "/usr/local/lib/python3.11/dist-packages/motioneye/config.py", line 31, in <module> Apr 05 14:32:51 raspberrypi meyectl[795]: from motioneye import meyectl, motionctl, settings, tasks, uploadservices, utils Apr 05 14:32:51 raspberrypi meyectl[795]: File "/usr/local/lib/python3.11/dist-packages/motioneye/motionctl.py", line 25, in <module> Apr 05 14:32:51 raspberrypi meyectl[795]: from tornado.httpclient import AsyncHTTPClient, HTTPRequest Apr 05 14:32:51 raspberrypi meyectl[795]: File "/usr/local/lib/python3.11/dist-packages/tornado/httpclient.py", line 50, in <module> Apr 05 14:32:51 raspberrypi meyectl[795]: from tornado import gen, httputil, stack_context Apr 05 14:32:51 raspberrypi meyectl[795]: File "/usr/local/lib/python3.11/dist-packages/tornado/httputil.py", line 107, in <module> Apr 05 14:32:51 raspberrypi meyectl[795]: class HTTPHeaders(collections.MutableMapping): Apr 05 14:32:51 raspberrypi meyectl[795]: ^^^^^^^^^^^^^^^^^^^^^^^^^^ Apr 05 14:32:51 raspberrypi meyectl[795]: AttributeError: module 'collections' has no attribute 'MutableMapping' Apr 05 14:32:51 raspberrypi systemd[1]: motioneye.service: Main process exited, code=exited, status=1/FAILURE Apr 05 14:32:51 raspberrypi systemd[1]: motioneye.service: Failed with result 'exit-code'.

Any assistance on this matter would be greatly appreciated. I could always go back to motioneyeos which still seems to work but that seems like a potential security issue.

Edit: Due to the time-sensitive nature of my issue I opted to restart with the "legacy" raspberry pi os which allowed a proper install

zagrim commented 7 months ago

The installation instructions in the Wiki all are for Python 2 based releases since the new Python 3 based on is not yet fully released, but can be installed using these instructions: https://github.com/motioneye-project/motioneye/blob/main/README.md I don't remember if someone has used them already on Bookworm but at least they should work ok.

AntiSol commented 7 months ago

I have installed on a couple of raspberry pis running bookworm using the instructions @zagrim linked to, and can confirm that they work :)

Bluscream commented 7 months ago

The installation instructions in the Wiki all are for Python 2 based releases since the new Python 3 based on is not yet fully released, but can be installed using these instructions: https://github.com/motioneye-project/motioneye/blob/main/README.md I don't remember if someone has used them already on Bookworm but at least they should work ok.

Sadly these instructions result in the folling error:

root@minopia:/tmp# /usr/local/bin/meyectl startserver -c /etc/motioneye/motioneye.conf
Traceback (most recent call last):
  File "/usr/local/bin/meyectl", line 5, in <module>
    from motioneye.meyectl import main
  File "/usr/local/lib/python3.11/dist-packages/motioneye/meyectl.py", line 29, in <module>
    from motioneye import config, settings
  File "/usr/local/lib/python3.11/dist-packages/motioneye/config.py", line 31, in <module>
    from motioneye import meyectl, motionctl, settings, tasks, uploadservices, utils
  File "/usr/local/lib/python3.11/dist-packages/motioneye/motionctl.py", line 25, in <module>
    from tornado.httpclient import AsyncHTTPClient, HTTPRequest
  File "/usr/local/lib/python3.11/dist-packages/tornado/httpclient.py", line 50, in <module>
    from tornado import gen, httputil, stack_context
  File "/usr/local/lib/python3.11/dist-packages/tornado/httputil.py", line 107, in <module>
    class HTTPHeaders(collections.MutableMapping):
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: module 'collections' has no attribute 'MutableMapping'
AntiSol commented 7 months ago

@Bluscream this has to do with the change introduced in a recent python version which moved MutableMapping into collections.abc. Specifically it looks like you have a version of the tornado library which isn't compatible with python 3.11.

On my raspbian 12 machine I have tornado 6.4 (to check, do pip freeze | grep tornado) and it's been updated to be compatible with the change. I think you should be able to fix this with something like pip install --upgrade tornado==6.4.

Strange that it doesn't seem to have installed the correct version for you.

Bluscream commented 7 months ago

Someone already pointed this out https://github.com/tornadoweb/tornado/issues/3372

Thank you tho. And this was on a fresh raspbian bookworm/motioneye install btw 🙄