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

运行Constrained OptiDice代码时导入py_client.so遇未定义符号错误求助

运行Constrained OptiDice代码时出现Courier库符号未定义错误

问题详情

  • 为研究需求运行Google DeepMind的Constrained OptiDice代码,按要求安装依赖后执行neural/run_experiments时触发错误:
    envs/cop/lib/python3.7/site-packages/courier/python/py_client.so: undefined symbol:_ZN4absl12lts_2021110214ascii_internal13kPropertyBitsE
    
  • 错误触发代码行:from courier.python import py_client(其中courier/python为目录,py_client是编译生成的.so文件)
  • 已测试Ubuntu 20.04、22.04系统,更换过不同版本gcc、g++,均未解决;推测为C封装.so文件的符号版本冲突问题
  • 环境配置:Ubuntu 22.04 + Miniconda3 + Python 3.7.16,错误源自dm-launchpad-nightly库
  • 可参考错误发生目录的内容截图

解决方案

1. 统一Abseil库版本

该错误核心是py_client.so编译依赖的Abseil(absl)版本与当前环境安装版本不匹配,符号中的lts_20211102标识对应Abseil LTS 20211102版本,需对齐版本:

  • 卸载现有absl-py:
    pip uninstall -y absl-py
    
  • 安装匹配版本的absl-py:
    pip install absl-py==1.0.0
    
    (注:absl-py 1.0.0对应Abseil C++ LTS 20211102版本,可匹配目标符号)

2. 从源码编译Courier库

若版本对齐无效,需重新编译Courier库以适配当前环境的依赖:

  • 克隆Courier源码:
    git clone https://github.com/deepmind/courier.git
    
  • 进入目录并编译安装:
    cd courier
    pip install -e .
    
    编译过程会自动链接当前环境的Abseil库,彻底解决符号不匹配问题。

3. 替换dm-launchpad版本

dm-launchpad-nightly可能自带不兼容的Courier/Abseil依赖,可更换为稳定版:

  • 卸载nightly版本:
    pip uninstall -y dm-launchpad-nightly
    
  • 安装稳定版dm-launchpad:
    pip install dm-launchpad
    
    稳定版依赖经过兼容性测试,冲突概率更低。

4. 创建全新conda环境隔离依赖

旧环境依赖混乱可能导致隐性冲突,全新环境可彻底隔离问题:

conda create -n constrained_optidice python=3.7.16
conda activate constrained_optidice
# 重新安装项目依赖
pip install -r requirements.txt
# 按需安装launchpad版本
pip install dm-launchpad-nightly

内容的提问来源于stack exchange,提问作者Minjae Cho

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 15:10:16