OvenSpace
OvenSpace copied to clipboard
'eventlet' invalid or not found
I am trying to run OvenSpace on Ubuntu with Python3.10 without success. Still getting:
Error: class uri 'eventlet' invalid or not found
I already tried several version of enventlet from 0.28.0 up to 33.1 without success.
Error: class uri 'eventlet' invalid or not found
[Traceback (most recent call last):
File "/home/anubis/OvenSpace/venv/lib/python3.10/site-packages/gunicorn/util.py", line 99, in load_class
mod = importlib.import_module('.'.join(components))
File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 883, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "/home/anubis/OvenSpace/venv/lib/python3.10/site-packages/gunicorn/workers/geventlet.py", line 10, in <module>
import eventlet
File "/home/anubis/OvenSpace/venv/lib/python3.10/site-packages/eventlet/__init__.py", line 17, in <module>
from eventlet import convenience
File "/home/anubis/OvenSpace/venv/lib/python3.10/site-packages/eventlet/convenience.py", line 7, in <module>
from eventlet.green import socket
File "/home/anubis/OvenSpace/venv/lib/python3.10/site-packages/eventlet/green/socket.py", line 21, in <module>
from eventlet.support import greendns
File "/home/anubis/OvenSpace/venv/lib/python3.10/site-packages/eventlet/support/greendns.py", line 66, in <module>
setattr(dns, pkg, import_patched('dns.' + pkg))
File "/home/anubis/OvenSpace/venv/lib/python3.10/site-packages/eventlet/support/greendns.py", line 61, in import_patched
return patcher.import_patched(module_name, **modules)
File "/home/anubis/OvenSpace/venv/lib/python3.10/site-packages/eventlet/patcher.py", line 132, in import_patched
return inject(
File "/home/anubis/OvenSpace/venv/lib/python3.10/site-packages/eventlet/patcher.py", line 109, in inject
module = __import__(module_name, {}, {}, module_name.split('.')[:-1])
File "/home/anubis/OvenSpace/venv/lib/python3.10/site-packages/dns/namedict.py", line 35, in <module>
class NameDict(collections.MutableMapping):
AttributeError: module 'collections' has no attribute 'MutableMapping'
]
Same Error over here, but different stacktrace: python3.8
$ sudo pip install eventlet Requirement already satisfied: eventlet in /usr/local/lib/python3.8/dist-packages (0.31.1) Requirement already satisfied: greenlet>=0.3 in /usr/local/lib/python3.8/dist-packages (from eventlet) (1.1.1) Requirement already satisfied: dnspython<2.0.0,>=1.15.0 in /usr/lib/python3/dist-packages (from eventlet) (1.16.0) Requirement already satisfied: six>=1.10.0 in /usr/local/lib/python3.8/dist-packages (from eventlet) (1.16.0)
and
$ sudo ./run.sh
Error: class uri 'eventlet' invalid or not found:
[Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/gunicorn/util.py", line 99, in load_class
mod = importlib.import_module('.'.join(components))
File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 848, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/usr/local/lib/python3.8/dist-packages/gunicorn/workers/geventlet.py", line 20, in <module>
from eventlet.wsgi import ALREADY_HANDLED as EVENTLET_ALREADY_HANDLED
ImportError: cannot import name 'ALREADY_HANDLED' from 'eventlet.wsgi' (/usr/local/lib/python3.8/dist-packages/eventlet/wsgi.py)
]
Meanwhile I was successful with Python3.8 + enventlet 0.30.2
Yes I did a little research: [https://github.com/benoitc/gunicorn/pull/2581]
It's recommended to use eventlet>=0.31.0 if one uses websockets, because older versions are vulnerable to DoS attack. GHSA-9p9m-jm8w-94p2
but with pip uninstall eventlet
and pip install eventlet==0.30.2
it now seems to work