You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法通过pip安装pyblake2的问题求助及编译报错详情

解决pyblake2安装失败的问题

问题场景

一开始安装pyblake2时提示缺少Microsoft Visual C++ 14.0或更高版本,安装VC v14+运行库后没有改善,随后安装了带MSVC v142 - VS 2019 C++ x64/x86构建工具(v14.26)和Windows 10 SDK(10.0.17763.0)的Visual Studio 2019 Build Tools,但执行pip install pyblake2仍报错,核心错误为:

pyblake2module.c(699): error C2106: '=': left operand must be l-value
pyblake2module.c(703): error C2106: '=': left operand must be l-value

问题根源

你使用的pyblake2 1.1.2版本不兼容Python 3.12。Python 3.12对部分C API宏做了修改,比如PyBytes_AS_STRING、PyByteArray_AS_STRING从可直接修改的宏变为返回只读指针的函数,原代码中直接给这些宏的结果赋值的写法因此失效,触发了C2106编译错误。

解决办法

1. 安装兼容Python 3.12的pyblake2版本

pyblake2后续版本已修复该兼容问题,直接升级安装即可:

pip install pyblake2 --upgrade

若最新版本仍无法安装,可指定安装1.1.3及以上的版本(可查看项目版本日志确认具体兼容版本)。

2. 使用预编译wheel包跳过源码编译

避免源码编译环节,直接下载对应你Python版本(如3.12)和系统架构(如x64)的预编译.whl文件,再执行安装:

pip install <下载的wheel文件名>.whl

3. 临时修改源码(应急使用,不推荐)

若必须使用旧版本,可手动修改报错的源码行:
找到pyblake2module.c中第699和703行,将直接给PyBytes_AS_STRING(...)赋值的代码,改为先将指针存入变量再赋值:
原代码示例:

PyBytes_AS_STRING(result) = (char *)&state->b[0];

修改为:

char *res_ptr = PyBytes_AS_STRING(result);
res_ptr = (char *)&state->b[0];

(修改时需结合上下文,确保内存操作安全)

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 11:05:24