使用setup.py安装pyethash报错:无法找到assert.h及编译失败
解决pyethash安装时的编译错误与弃用警告问题
核心编译错误修复
1. 移除MSVC不支持的编译参数
你的setup.py中使用了GCC专属的-std=gnu99参数,Windows平台的MSVC编译器无法识别该选项,会触发警告并直接忽略。需要分平台调整编译参数:
修改setup.py里Extension的定义部分:
# 分平台设置编译参数 extra_compile_args = ["-Isrc/", "-Wall"] if os.name != 'nt': extra_compile_args.append("-std=gnu99") pyethash = Extension('pyethash', sources=sources, depends=depends, extra_compile_args=extra_compile_args)
2. 修复assert.h找不到的问题
assert.h是C标准库头文件,找不到说明你的Visual Studio Build Tools环境配置异常:
- 确认安装Visual Studio Build Tools时,已勾选**"Desktop development with C++"**组件,包含MSVC编译器、Windows SDK等核心内容。
- 打开**"x64 Native Tools Command Prompt for VS 2022"**,激活Python虚拟环境后再执行安装操作,确保编译器能正确识别系统头文件路径。
解决setup.py弃用警告
官方已弃用直接运行python setup.py install的方式,推荐使用标准工具链:
- 安装build工具:
pip install build
- 在项目根目录执行构建:
python -m build --wheel
- 用installer安装生成的wheel包(路径根据实际生成的文件名调整):
pip install dist/pyethash-0.1.23-cpXX-cpXX-win_amd64.whl
额外处理:文件缺失警告
错误日志提到warning: no files found matching 'src\libethash\util.c',请检查项目目录:
- 若该文件确实不存在,从ethash官方仓库同步完整代码;
- 或在
setup.py的depends或sources列表中移除对该不存在文件的引用。
内容的提问来源于stack exchange,提问作者ion viitor
相关产品推荐
相关产品推荐

