python3.11更高版本使用aioredis报错TypeError: duplicate base class TimeoutError

字号+ 编辑: 种花家 修订: 种花家 来源: 2025-06-14 我要说两句(0)

使用高版本的python环境, 用aioredis会报一大堆错TypeError: duplicate base class TimeoutError, 本文讲述在venv虚拟环境下如何处理。

先记录一下整体的报错内容:

# ./.venv/bin/python -m uvicorn main:app --reload --proxy-headers --forwarded-allow-ips='*'

INFO:     Will watch for changes in these directories: ['/some_path/website']

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

INFO:     Started reloader process [71] using StatReload

Process SpawnProcess-1:

Traceback (most recent call last):

File "/root/miniconda3/lib/python3.12/multiprocessing/process.py", line 314, in _bootstrap

self.run()

File "/root/miniconda3/lib/python3.12/multiprocessing/process.py", line 108, in run

self._target(*self._args, **self._kwargs)

File "/some_path/website/.venv/lib/python3.12/site-packages/uvicorn/_subprocess.py", line 80, in subprocess_started

target(sockets=sockets)

File "/some_path/website/.venv/lib/python3.12/site-packages/uvicorn/server.py", line 66, in run

return asyncio.run(self.serve(sockets=sockets))

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/root/miniconda3/lib/python3.12/asyncio/runners.py", line 195, in run

return runner.run(main)

^^^^^^^^^^^^^^^^

File "/root/miniconda3/lib/python3.12/asyncio/runners.py", line 118, in run

return self._loop.run_until_complete(task)

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/root/miniconda3/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete

return future.result()

^^^^^^^^^^^^^^^

File "/some_path/website/.venv/lib/python3.12/site-packages/uvicorn/server.py", line 70, in serve

await self._serve(sockets)

File "/some_path/website/.venv/lib/python3.12/site-packages/uvicorn/server.py", line 77, in _serve

config.load()

File "/some_path/website/.venv/lib/python3.12/site-packages/uvicorn/config.py", line 435, in load

self.loaded_app = import_from_string(self.app)

^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/some_path/website/.venv/lib/python3.12/site-packages/uvicorn/importer.py", line 19, in import_from_string

module = importlib.import_module(module_str)

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/root/miniconda3/lib/python3.12/importlib/__init__.py", line 90, in import_module

return _bootstrap._gcd_import(name[level:], package, level)

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "<frozen importlib._bootstrap>", line 1387, in _gcd_import

File "<frozen importlib._bootstrap>", line 1360, in _find_and_load

File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked

File "<frozen importlib._bootstrap>", line 935, in _load_unlocked

File "<frozen importlib._bootstrap_external>", line 999, in exec_module

File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed

File "/some_path/website/main.py", line 5, in <module>

from database import lifespan

File "/some_path/website/database.py", line 2, in <module>

import aioredis

File "/some_path/website/.venv/lib/python3.12/site-packages/aioredis/__init__.py", line 1, in <module>

from aioredis.client import Redis, StrictRedis

File "/some_path/website/.venv/lib/python3.12/site-packages/aioredis/client.py", line 32, in <module>

from aioredis.connection import (

File "/some_path/website/.venv/lib/python3.12/site-packages/aioredis/connection.py", line 33, in <module>

from .exceptions import (

File "/some_path/website/.venv/lib/python3.12/site-packages/aioredis/exceptions.py", line 14, in <module>

class TimeoutError(asyncio.TimeoutError, builtins.TimeoutError, RedisError):

TypeError: duplicate base class TimeoutError

笔者使用的是venv虚拟环境, 虚拟目录位置在.venv, 那么找到.venv/lib/python3.1x/site-packages/aioredis/exceptions.py 第14行, 将之改成:

class TimeoutError(asyncio.exceptions.TimeoutError, RedisError):

再测, 问题解决。

阅完此文,您的感想如何?
  • 有用

    1

  • 没用

    0

  • 开心

    0

  • 愤怒

    0

  • 可怜

    0

1.如文章侵犯了您的版权,请发邮件通知本站,该文章将在24小时内删除;
2.本站标注原创的文章,转发时烦请注明来源;
3.Q群: 2702237 13835667

相关课文
  • 通过i参数使用国内镜像给pip安装提速

  • Conda删除不用的虚拟环境

  • flask框架知识点总结

  • linux - centos 7.x安装python3.10教程

我要说说
网上嘉宾点评