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

安装gluonnlp 0.10.0后导入报错:undefined symbol _PyGen_Send

问题:导入gluonnlp 0.10.0时出现ImportError(Python 3.10.6 + Ubuntu 22.04)

环境与问题

在Ubuntu 22.04.1 LTS服务器的Python 3.10.6环境下,通过pip安装gluonnlp 0.10.0后,执行import gluonnlp as nlp时触发以下ImportError。

错误回溯

Traceback (most recent call last):
  File "[...]/lib/python3.10/site-packages/IPython/core/interactiveshell.py", line 3460, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-4-e68c3b59001c>", line 1, in <module>
    import gluonnlp as nlp
  File "[...]/lib/python3.10/site-packages/gluonnlp/__init__.py", line 25, in <module>
    from . import data
  File "[...]/lib/python3.10/site-packages/gluonnlp/data/__init__.py", line 23, in <module>
    from . import (batchify, candidate_sampler, conll, corpora, dataloader,
  File "[...]/lib/python3.10/site-packages/gluonnlp/data/corpora/__init__.py", line 21, in <module>
    from . import (google_billion_word, large_text_compression_benchmark, wikitext)
  File "[...]/lib/python3.10/site-packages/gluonnlp/data/corpora/google_billion_word.py", line 34, in <module>
    from ...vocab import Vocab
  File "[...]/lib/python3.10/site-packages/gluonnlp/vocab/__init__.py", line 21, in <module>
    from . import bert, elmo, subwords, vocab
  File "[...]/lib/python3.10/site-packages/gluonnlp/vocab/bert.py", line 24, in <module>
    from ..data.transforms import SentencepieceTokenizer
  File "[...]/lib/python3.10/site-packages/gluonnlp/data/transforms.py", line 48, in <module>
    from .fast_bert_tokenizer import is_control, is_punctuation, is_whitespace
ImportError: [...]/lib/python3.10/site-packages/gluonnlp/data/fast_bert_tokenizer.cpython-310-x86_64-linux-gnu.so: undefined symbol: _PyGen_Send

当前已安装的核心包列表

Package                  Version
------------------------ -----------
Cython                   0.29.33
gluonnlp                 0.10.0
mxnet                    1.9.1
numpy                    1.23.5
sentencepiece            0.1.97

(完整包列表见用户提供的pip list输出)

已尝试操作

  • 重装Cython、gluonnlp和mxnet
  • 已在项目仓库提交相关issue

解决思路建议

  1. 升级Cython并源码编译gluonnlp
    当前使用的Cython 0.29.33版本较旧,对Python 3.10的兼容性不足。先升级Cython,再强制从源码编译安装gluonnlp,避免使用预编译的不兼容wheel:
pip install --upgrade cython
pip uninstall -y gluonnlp
pip install gluonnlp==0.10.0 --no-binary :all:
  1. 调整mxnet版本
    gluonnlp 0.10.0与mxnet 1.9.1的组合在Python 3.10下可能存在适配问题,尝试降级mxnet到1.8.0版本:
pip uninstall -y mxnet
pip install mxnet==1.8.0
  1. 替换fast_bert_tokenizer的依赖
    如果暂时不需要快速分词功能,可以修改gluonnlp/data/transforms.py文件,注释掉原导入语句,替换为纯Python实现的判断函数:
# 注释原导入行
# from .fast_bert_tokenizer import is_control, is_punctuation, is_whitespace

# 添加纯Python实现
def is_control(char):
    return char in {'\t', '\n', '\r'} or ord(char) <= 31 or ord(char) >= 127

def is_punctuation(char):
    puncts = {'!', '"', '#', '$', '%', '&', "'", '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '@', '[', '\\', ']', '^', '_', '`', '{', '|', '}', '~'}
    return char in puncts or ord(char) >= 127

def is_whitespace(char):
    return char == ' ' or char == '\t' or char == '\n' or char == '\r' or ord(char) == 0x202F
  1. 尝试gluonnlp开发版
    如果稳定版对Python 3.10支持不足,直接从GitHub安装最新开发版:
pip uninstall -y gluonnlp
pip install git+https://github.com/dmlc/gluon-nlp.git

内容的提问来源于stack exchange,提问作者Max Teflon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 01:47:14