饭a 2023-01-28 20:43 采纳率: 77.8%
浏览 45
已结题

关于Pypi的包版本依赖冲突的问题,如何解决?

我在运行qq-botpy的时候,想利用Python的Redis包来管理数据库
在安装redis后,botpy报错提示需要的async-timeout版本为3.0-4.0,但是Redis包需求的async-timeout版本为>4.0

C:\Users\afanm>pip install --upgrade async-timeout
Looking in indexes: http://mirrors.aliyun.com/pypi/simple/
Requirement already satisfied: async-timeout in d:\python\lib\site-packages (3.0.1)
Collecting async-timeout
  Using cached http://mirrors.aliyun.com/pypi/packages/d6/c1/8991e7c5385b897b8c020cdaad718c5b087a6626d1d11a23e1ea87e325a7/async_timeout-4.0.2-py3-none-any.whl (5.8 kB)
Installing collected packages: async-timeout
  Attempting uninstall: async-timeout
    Found existing installation: async-timeout 3.0.1
    Uninstalling async-timeout-3.0.1:
      Successfully uninstalled async-timeout-3.0.1
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
aiohttp 3.7.4.post0 requires async-timeout<4.0,>=3.0, but you have async-timeout 4.0.2 which is incompatible.
Successfully installed async-timeout-4.0.2


更新完成后,Redis不再提示依赖版本问题,运行botpy开始报错

PS C:\Users\afanm> & D:/Python/python.exe "d:/Desktop/新建 文本文档.py"
Traceback (most recent call last):
  File "d:\Desktop\新建 文本文档.py", line 1, in <module>
    import botpy
  File "D:\Python\lib\site-packages\botpy\__init__.py", line 3, in <module>
    from .client import *
  File "D:\Python\lib\site-packages\botpy\client.py", line 7, in <module>
    from .api import BotAPI
  File "D:\Python\lib\site-packages\botpy\api.py", line 9, in <module>
    from .http import BotHttp, Route
  File "D:\Python\lib\site-packages\botpy\http.py", line 7, in <module>
    import aiohttp
  File "D:\Python\lib\site-packages\aiohttp\__init__.py", line 6, in <module>
    from .client import (
  File "D:\Python\lib\site-packages\aiohttp\client.py", line 35, in <module>
    from . import hdrs, http, payload
  File "D:\Python\lib\site-packages\aiohttp\http.py", line 7, in <module>
    from .http_parser import (
  File "D:\Python\lib\site-packages\aiohttp\http_parser.py", line 15, in <module>
    from .helpers import NO_EXTENSIONS, BaseTimerContext
  File "D:\Python\lib\site-packages\aiohttp\helpers.py", line 667, in <module>
    class CeilTimeout(async_timeout.timeout):
TypeError: function() argument 'code' must be code, not str

再重新安装botpy后,将已有的async-timeout降级为3.x,botpy正常使用
如果我要使这Botpy和redis可以共存使用,我该如何解决依赖版本冲突问题?
劳烦各位解答,感谢!

  • 写回答

2条回答 默认 最新

  • 梦想橡皮擦 Python领域优质创作者 2023-01-28 21:17
    关注

    使用pipenv或virtualenv来管理依赖项。
    这样可以将两个库的依赖项隔离开来,避免版本冲突。

    使用不同版本的async-timeout。
    可以在安装redis之前先安装async-timeout==3.0-4.0,然后再安装redis。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月5日
  • 已采纳回答 1月28日
  • 创建了问题 1月28日

悬赏问题

  • ¥15 调用函数时,无关变量的改变引起函数值的改变
  • ¥15 xy坐标转化为经纬度坐标
  • ¥15 一般三角模糊数的上界值和下届值取中值的多少比较合理?
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥20 Hbase启动失败,无法启动HMaster
  • ¥15 sqpingboot在父模块已经引入了mybatisplus 在子组件不写版本号还是报错
  • ¥20 Lumerical FDTD solutions 中模型的相对阻抗,有效介电常数和有效磁导率的实部和虚部的数据如何获得?
  • ¥100 sql reporting service 远程smtp服务器配置支持
  • ¥15 ppyoloe_r带角度目标检测,loss_cls没法收敛
  • ¥15 淘宝交易指数如何解读,其关联的数据指标是什么