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

关于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日

悬赏问题

  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系