现象
最新alpha版Python 3.13.0a6通过pip安装cryptography
报错
pip install cryptography
raise distutils.errors.DistutilsPlatformError("Unable to find vcvarsall.bat")
distutils.errors.DistutilsPlatformError: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
这实际上是安装cffi
时候的报错,直接运行pip install cffi
会报相同的错误. 于是尝试修复
按照报错信息给的下载地址安装需要的C++库和编译环境,找到 用于 Visual Studio 的工具 部分,并下载 Visual Studio 生成工具。下载后,运行安装程序,选择 使用 C++ 的桌面开发
,并在右侧面板中勾选 至少前两个选项
然后单击 安装
按钮开始安装。如下:
再次执行pip install cffi
安装 一顿操作猛如虎,最后报错信息变为
_cffi_backend.obj : error LNK2001: unresolved external symbol _PyErr_WriteUnraisableMsg
build\lib.win-amd64-cpython-313\_cffi_backend.cp313-win_amd64.pyd : fatal error LNK1120: 1 unresolved externals
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.39.33519\\bin\\HostX86\\x64\\link.exe' failed with exit code 1120
解决办法
嘎嘎一顿乱搜之后发现Python 3.13.0a6由于是alpha版本cryptography
和cffi
可能需要做适配.
原问题描述如下 通过pip install --pre cffi
安装预览版报也许可以解决问题不过根据作者描述来看可能得等到Python 3.13.0rc1 发布之后才会有cffi适配的预发布版本. 实在不行可以把python降级回3.12版本再用pip安装cffi.