Python3导入paramiko报错:_sodium库无指定函数/常量
解决Python3.5中import paramiko出现的AttributeError问题
这个问题我之前维护老项目时碰到过,本质是依赖库版本不兼容或者PyNaCl安装不完整导致的,结合你使用的Python3.5环境,具体原因和解决办法如下:
问题原因
- Paramiko新版本依赖的PyNaCl库需要支持
crypto_aead_chacha20poly1305_ietf_keybytes这个函数,但Python3.5属于已停止维护的旧版本,很多新的PyNaCl版本不再对它做兼容适配,导致安装的PyNaCl缺少这个函数。 - 另外如果PyNaCl是通过不匹配系统/版本的二进制wheel包安装的,也会出现动态链接库缺失指定函数的情况。
解决步骤
1. 卸载冲突的现有库
先把当前安装的Paramiko和PyNaCl全部卸载,避免版本残留冲突:
pip uninstall -y paramiko nacl
2. 安装适配Python3.5的兼容版本
Python3.5最高支持的Paramiko版本是2.7.x系列,对应的PyNaCl需要选择兼容的旧版本,执行以下命令安装:
pip install paramiko==2.7.2 nacl==1.4.0
或者用范围约束来安装兼容版本:
pip install "paramiko<2.8" "nacl<1.5"
3. 若二进制安装失败,尝试源码编译安装
如果上面的方法还是报错,可能是二进制包的问题,尝试从源码编译安装PyNaCl(需要系统有编译环境,比如Ubuntu下先安装sudo apt-get install gcc python3.5-dev):
pip install --no-binary :all: nacl==1.4.0
额外建议
Python3.5已经在2020年停止官方维护了,后续会有越来越多的第三方库不再支持它,如果项目允许的话,建议升级到Python3.7及以上版本,能从根源上避免这类兼容性问题。
内容的提问来源于stack exchange,提问作者jeffry copps
相关产品推荐
相关产品推荐

