升级至Python 3.9.0a5后安装cryptography报错求助
解决Python 3.9.0a5安装cryptography报错的问题
嘿,这个问题其实挺常见的——毕竟你用的是Python 3.9的早期alpha预览版,很多第三方库还没来得及适配它。下面我给你几个可行的解决思路,按优先级来:
1. 先把Pip升到最新版再说
你的Pip是20.1.1,这个版本对Python 3.9预览版的兼容性不太够。先执行这条命令升级Pip:
python -m pip install --upgrade pip
升级完成后再试试安装cryptography,新版本的Pip对新Python版本的支持会好很多,说不定能直接解决问题。
2. 如果还是报错,就得装编译依赖了
要是升级Pip后还是装不上,那大概率是Pip只能从源码编译cryptography,但你的系统缺少编译所需的依赖。不同系统的安装方式不一样:
- Windows:得装Microsoft Visual C++ Build Tools,记得勾选"C++ build tools"和对应的Windows SDK组件,安装完重启下终端再试。
- macOS:先装Xcode命令行工具:
然后用Homebrew装OpenSSL:xcode-select --install
还要设置环境变量让编译器找到OpenSSL:brew install opensslexport LDFLAGS="-L$(brew --prefix openssl)/lib" export CPPFLAGS="-I$(brew --prefix openssl)/include" - Linux(Debian/Ubuntu系):直接装这些编译依赖包:
装完依赖后再跑sudo apt-get install build-essential libssl-dev libffi-dev python3-devpip install cryptography试试。
3. 最省心的方案:降级到Python稳定版(强烈推荐)
说实话,Python 3.9.0a5是alpha测试版,本来就不是给日常开发用的,很多库的适配工作都没做完。你是因为字典合并运算符升级的?其实Python 3.8可以用替代写法实现同样的功能:
# 合并两个字典,和3.9的dict1 | dict2效果一样 merged_dict = {**dict1, **dict2} # 原地合并,和dict1 |= dict2效果一样 dict1.update(dict2)
用这个替代方案的话,你可以降级到Python 3.8的稳定版,cryptography安装起来会顺畅得多,毕竟稳定版的生态支持完善太多了。
4. 非要用3.9a5?试试预发布版的cryptography
如果实在不想降级,可以试试安装cryptography的预发布版本,说不定已经有适配3.9预览版的包了:
pip install cryptography --pre
内容的提问来源于stack exchange,提问作者Quirynn
相关产品推荐
相关产品推荐

