如何在Python虚拟环境安装cryptography?报错:undefined symbol: __syscall_error
解决Python3.4虚拟环境安装cryptography时的
undefined symbol: __syscall_error错误 嘿,这个错误我之前碰到过几次,大概率是因为Python3.4太老,最新版的cryptography已经不再兼容它,或者编译时系统依赖没装全导致的。给你几个靠谱的解决步骤:
1. 安装适配Python3.4的cryptography旧版本
Python3.4早在2019年就停止维护了,cryptography从2.4版本开始就不再支持它。你得指定一个兼容的版本来安装,执行这个命令:
pip install "cryptography<2.4"
2. 补全系统级编译依赖
cryptography编译的时候需要依赖几个系统库,如果这些库缺失,就容易出现符号找不到的错误。以Debian/Ubuntu系统为例,先在系统层面安装这些依赖:
sudo apt-get install libssl-dev libffi-dev python3.4-dev
装完之后回到虚拟环境,再重新尝试安装上面指定的cryptography版本。
3. 重建虚拟环境排除环境损坏问题
有时候虚拟环境创建过程中可能会有文件缺失或损坏,不妨重建一个试试:
# 先退出当前虚拟环境 deactivate # 删除旧的虚拟环境文件夹 rm -rf [venv_name_here] # 重新创建并激活 python3.4 -m venv [venv_name_here] cd [venv_name_here] source bin/activate # 先把pip和setuptools升级到适配Python3.4的最新版 pip install --upgrade setuptools pip # 再安装兼容的cryptography pip install "cryptography<2.4"
小提醒:你之前装错了依赖包
注意到你升级了pyparser,但cryptography实际依赖的是pycparser,这是两个不同的包。可以先卸载pyparser避免混淆:
pip uninstall -y pyparser
然后安装正确的依赖:
pip install --upgrade pycparser
内容的提问来源于stack exchange,提问作者murmur0m
相关产品推荐
相关产品推荐

