You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

pip安装hidapi失败:原因诊断、测试及解决方法问询

解答你的hidapi安装与TLS版本问题

嘿,我来帮你拆解这个安装hidapi时遇到的TLS问题,一个个来解答你的疑问:

1. 现有信息是否足以明确安装失败的原因?

完全可以!你碰到的[TLSV1_ALERT_PROTOCOL_VERSION] SSL证书验证错误,再加上检测到Python TLS版本是1.0,核心原因已经很清晰了:现在PyPI官方服务器早就停止支持TLS 1.0/1.1这两个过时协议了,只接受TLS 1.2及以上版本的连接请求。你的pip在连接PyPI时用了TLS 1.0,直接被服务器拒绝,所以安装失败。

2. 需要执行哪些测试来排查问题以采取纠正措施?

可以做这几个简单的测试来确认细节,确保后续的纠正措施精准:

  • 检查pip的实际TLS使用情况:执行pip install --verbose requests,看输出日志里的TLS协议相关内容,确认是不是真的在使用TLS 1.0
  • 查看系统OpenSSL版本:运行openssl version,因为Python的TLS支持依赖系统的OpenSSL库,如果OpenSSL版本低于1.0.1,根本没法支持TLS 1.2
  • 验证Python ssl模块的支持:打开Python交互窗口,输入import ssl; print(ssl.OPENSSL_VERSION); print(ssl.PROTOCOL_TLSv1_2),如果报错说PROTOCOL_TLSv1_2不存在,说明你的Python版本太老,原生不支持TLS 1.2
  • 测试系统层面的TLS连接:用curl -v https://pypi.org/simple/hidapi/,看返回的TLS握手信息,确认系统本身能不能正常用TLS 1.2连接PyPI

3. 若信息充足,正确的纠正措施是什么?

结合你的情况,按优先级推荐这些纠正方法:

  1. 优先升级Python版本:如果你的Python是2.7.x或者3.4及以下版本,这些版本默认不支持TLS 1.2,建议直接升级到Python 3.7及以上(现在PyPI要求的最低支持版本是3.7),从根源解决TLS支持问题
  2. 单独升级pip到兼容版本:如果暂时没法升级Python,可以用get-pip.py脚本绕过TLS限制来升级pip。执行:
    # 针对Python 3.x
    curl https://bootstrap.pypa.io/get-pip.py | sudo python3
    # 针对Python 2.7(仅临时应急,建议尽快升级Python)
    curl https://bootstrap.pypa.io/pip/2.7/get-pip.py | sudo python
    
    升级完pip后,再尝试安装hidapi应该就能正常连接了
  3. 升级系统OpenSSL库:如果系统的OpenSSL版本低于1.0.1,先升级OpenSSL(比如Ubuntu用sudo apt install openssl),如果你的Python是源码编译的,还要重新编译Python才能用上新的OpenSSL支持
  4. 临时绕过SSL验证(不推荐):如果只是临时测试,可以给pip加参数跳过证书验证:
    sudo pip install hidapi --trusted-host pypi.org --trusted-host files.pythonhosted.org
    
    但这个方法有安全风险,只能临时用,别长期依赖

4. 此处的“interpreter”具体指什么(属于Python还是pip?),如何升级?

这里的interpreter就是Python解释器,属于Python本身——pip其实是一个运行在Python解释器上的工具,它的TLS支持完全依赖Python解释器的能力。

升级Python解释器的方式分两种:

  • 用系统包管理器升级(推荐):比如在Debian/Ubuntu系统上,执行:
    sudo apt update && sudo apt install python3.10  # 替换成你想要的目标版本
    
    之后可以用update-alternatives设置默认的Python版本:
    sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1
    
  • 从源码编译安装:如果系统包管理器里没有你需要的版本,可以从Python官网下载对应版本的源码包,解压后执行:
    ./configure --enable-optimizations
    make -j$(nproc)
    sudo make altinstall
    
    altinstall不会覆盖系统默认的Python版本,避免破坏系统自带的依赖

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

火山引擎 最新活动