You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu20.04 Django项目安装pymongo时Trio包依赖冲突报错

解决AttributeError: module 'select' has no attribute 'epoll'依赖冲突问题

问题根源

你遇到的问题确实是依赖版本冲突导致的:pymongo 4.4.1依赖的httpcore包会自动拉取较新的Trio版本,而selenium 4.1.5固定依赖Trio 0.22.2,版本不匹配触发了底层IO模块的兼容性问题。

解决方案

1. 手动锁定兼容的依赖版本

在项目的requirements.txt中明确指定兼容的版本组合,强制保持依赖一致:

# 核心依赖锁定
selenium==4.1.5
pymongo==4.4.1
trio==0.22.2
# 指定兼容Trio 0.22.2的httpcore版本
httpcore==0.16.3

然后执行重装命令:

pip install -r requirements.txt --force-reinstall

2. 使用依赖管理工具自动解决冲突

用pip-tools自动生成兼容的依赖清单,避免手动版本匹配的麻烦:

  • 安装pip-tools:
    pip install pip-tools
    
  • 创建requirements.in文件,写入你的直接依赖:
    Django==[你的Django版本]
    selenium==4.1.5
    pymongo==4.4.1
    
  • 生成兼容的requirements.txt:
    pip-compile requirements.in
    
  • 安装依赖:
    pip install -r requirements.txt
    

3. 重置虚拟环境排除干扰

如果之前的虚拟环境有残留的不兼容包,重新创建干净的虚拟环境:

# 删除旧虚拟环境(可选)
rm -rf venv
# 创建Python3.9专属虚拟环境
python3.9 -m venv venv
# 激活环境
source venv/bin/activate
# 按顺序安装依赖,确保版本兼容
pip install selenium==4.1.5
pip install pymongo==4.4.1
pip install Django==[你的Django版本]

4. 验证系统环境

确保你的Ubuntu 20.04环境支持epoll:在Python交互终端执行以下命令,确认返回True:

import select
print(hasattr(select, 'epoll'))

内容的提问来源于stack exchange,提问作者Eyal Bismuth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 03:23:22