ModuleNotFoundError: нет модуля с именем «websockets.datastructures»

Я не знаю, как исправить эту ошибку в Ubuntu. Я пытаюсь запустить сервер FastApi, используя uvicorn

uvicorn.run("api:app", host = "0.0.0.0", port=3100, reload=True, workers=10)

Я пробовал pip3 install websockets :

Collecting websockets
  Downloading https://files.pythonhosted.org/packages/7e/86/cef054220bc080451fe9663ce7f99beda0599098241190b6b6dc1073ab92/websockets-10.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (112kB)
    100% |████████████████████████████████| 112kB 5.9MB/s 
Installing collected packages: websockets
Successfully installed websockets-8.1

Я не знаю, что еще нужно установить

    Traceback (most recent call last):
  File "/usr/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
    self.run()
  File "/usr/lib/python3.7/multiprocessing/process.py", line 99, in run
    self._target(*self._args, **self._kwargs)
  File "/home/hafid/.local/lib/python3.7/site-packages/uvicorn/_subprocess.py", line 76, in subprocess_started
    target(sockets=sockets)
  File "/home/hafid/.local/lib/python3.7/site-packages/uvicorn/server.py", line 60, in run
    return asyncio.run(self.serve(sockets=sockets))
  File "/usr/lib/python3.7/asyncio/runners.py", line 43, in run
    return loop.run_until_complete(main)
  File "/usr/lib/python3.7/asyncio/base_events.py", line 587, in run_until_complete
    return future.result()
  File "/home/hafid/.local/lib/python3.7/site-packages/uvicorn/server.py", line 67, in serve
    config.load()
  File "/home/hafid/.local/lib/python3.7/site-packages/uvicorn/config.py", line 471, in load
    ws_protocol_class = import_from_string(WS_PROTOCOLS[self.ws])
  File "/home/hafid/.local/lib/python3.7/site-packages/uvicorn/importer.py", line 24, in import_from_string
    raise exc from None
  File "/home/hafid/.local/lib/python3.7/site-packages/uvicorn/importer.py", line 21, in import_from_string
    module = importlib.import_module(module_str)
  File "/usr/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/home/hafid/.local/lib/python3.7/site-packages/uvicorn/protocols/websockets/auto.py", line 17, in <module>
    from uvicorn.protocols.websockets.websockets_impl import WebSocketProtocol
  File "/home/hafid/.local/lib/python3.7/site-packages/uvicorn/protocols/websockets/websockets_impl.py", line 9, in <module>
    from websockets.datastructures import Headers
ModuleNotFoundError: No module named 'websockets.datastructures'
Альтернативные WebSockets для netty/java: удвоение пропускной способности небольших сообщений
Альтернативные WebSockets для netty/java: удвоение пропускной способности небольших сообщений
Этот пост - краткая презентация netty-websocket-http1 - альтернативной netty/java реализации RFC6455 - протокола WebSocket.
Очень простая установка Websocket с помощью Deno без каких-либо пакетов
Очень простая установка Websocket с помощью Deno без каких-либо пакетов
Здесь мы рассмотрим, как можно использовать Websocket в Deno и развернуть его в Deno deploy. Мы будем слушать Websocket, а также отправлять сообщения.
1
0
908
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

необходимо обновить setuptools и pip

pip3 install -U setuptools

pip3 install -U pip

У меня была та же проблема, и я не уверен, почему это произошло, но я по крайней мере покажу вам свой обходной путь.

Лучше всего будет запустить:

pip uninstall websockets

pip install websockets

Но по какой-то причине эта команда не смогла удалить его для меня, поэтому я сделал это вручную.

Поскольку вы находитесь в Ubuntu, откройте эту папку как root:

/usr/local/lib/python3.8/dist-packages/websocket

Затем вы можете вручную загрузить файлы в файлы текущей версии websockets

В моем случае я заметил, что в моей старой папке веб-сокетов у меня не было websockets.datastructures, а также некоторых других файлов, таких как папки legacy и extensions, поэтому я просто распаковал всю библиотеку по пути, указанному выше, и это сработало.

Для меня любой из двух других ответов работает. Я просто обновляю веб-сокеты с помощью:

pip install -U websockets

Другие вопросы по теме