haiwen / seafdav

Seafile webdav server

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Can't start seafdav on python3: ImportError: cannot import name 'collections_abc'

MurzNN opened this issue · comments

Before this error, seafdav not starting without any error in log file, because of missing wsgidav package, if I start manually via /usr/bin/python3 -m wsgidav.server.server_cli --server gunicorn --root / --log-file /opt/seafile-server/logs/seafdav.log --pid /opt/seafile-server/pids/seafdav.pid --port 8080 --host 0.0.0.0 - it show the error:

/usr/bin/python3: Error while finding module specification for 'wsgidav.server.server_cli' (ModuleNotFoundError: No module named 'wsgidav')

After installing via pip3 install wsgidav - it shows other error:

$ /usr/bin/python3 -m wsgidav.server.server_cli --server gunicorn --root / --log-file /opt/seafile-server/logs/seafdav.log --pid /opt/seafile-server/pids/seafdav.pid --port 8080 --host 0.0.0.0
Traceback (most recent call last):
  File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/usr/local/lib/python3.6/dist-packages/wsgidav/server/server_cli.py", line 38, in <module>
    from wsgidav import __version__, util
  File "/usr/local/lib/python3.6/dist-packages/wsgidav/util.py", line 12, in <module>
    from wsgidav import compat
  File "/usr/local/lib/python3.6/dist-packages/wsgidav/compat.py", line 15, in <module>
    from six.moves import (
ImportError: cannot import name 'collections_abc'

How can i fix it?

Do you use our official package?

Yes, downloaded from official server without any modification, version is seafile-server-7.1.1, OS - Ubuntu 18.04

seems here mar10/wsgidav@2b5e5b1 1 is patch for fix this error?

After upgrading six and tox packages to versions, mentioned in this patch (pip3 install six==1.13 tox=3.13) - I got other error:

$ /usr/bin/python3 -m wsgidav.server.server_cli --server gunicorn --root / --log-file /opt/seafile-server/logs/seafdav.log --pid /opt/seafile-server/pids/seafdav.pid --port 8080 --host 0.0.0.0
usage: wsgidav [-h] [-p PORT] [-H HOST] [-r ROOT_PATH]
               [--auth {anonymous,nt,pam-login}]
               [--server {paste,gevent,cheroot,cherrypy,ext-wsgiutils,flup-fcgi,flup-fcgi_fork,wsgiref}]
               [--ssl-adapter {builtin,pyopenssl}] [-v | -q]
               [-c CONFIG_FILE | --no-config] [-V]
wsgidav: error: argument --server: invalid choice: 'gunicorn' (choose from 'paste', 'gevent', 'cheroot', 'cherrypy', 'ext-wsgiutils', 'flup-fcgi', 'flup-fcgi_fork', 'wsgiref')

We tested in our environment. And it works. You should not use pip to install wsgidav. Seafile includes a modified version of wsgidav (seafdav) in the package. Just follow our manual to start the webdav service. https://download.seafile.com/published/seafile-manual/extension/webdav.md

This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs.
Thank you for your contributions.