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

使用uv安装SMAC3时依赖pyrfr==0.9.0编译失败的解决方案咨询(GCC 13+下rapidjson只读成员赋值错误)

适配uv环境的pyrfr编译/安装解决方案

这里有两个针对你问题的可行方案,完全符合你要求的uv包管理器+Docker root环境的限制:

1. 传递-fpermissive编译参数给pyrfr

你之前直接设置CXXFLAGS无效,是因为uv在构建包时会使用隔离的环境上下文,需要显式将环境变量传递给构建子进程。推荐两种方法:

方法一:全局传递编译参数

在安装命令前用env显式指定CXXFLAGS,确保参数被传递给GCC:

env CXXFLAGS="-fpermissive" uv add smac

方法二:精准针对pyrfr设置

如果只想给pyrfr单独设置编译参数,可以先单独安装pyrfr,用uv pip的--config-settings直接传递参数给setuptools:

uv pip install pyrfr==0.9.0 --config-settings setup-args=--cxxflags="-fpermissive"
# 再安装SMAC3
uv add smac

这两种方法都会让GCC 13+以宽容模式处理旧版rapidjson的代码,绕过const成员赋值的编译错误。

2. 使用预编译wheel彻底避免编译

pyrfr 0.9.0及以上版本在PyPI上提供了适配Linux x86_64、Python 3.11的manylinux预编译wheel,你可以直接让uv优先使用二进制包,无需本地编译:

分步安装

# 强制使用pyrfr的预编译wheel
uv add pyrfr==0.9.0 --only-binary pyrfr
# 再安装SMAC3
uv add smac

一步到位

uv add smac --only-binary pyrfr

这样uv会自动下载对应架构和Python版本的预编译包,完全跳过编译环节,从根源上解决GCC版本兼容问题。


内容的提问来源于stack exchange,提问作者Couzin Emile

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 09:47:36