pip安装simpletransformers报UnicodeEncodeError错误求助
问题根因
这个报错和Python版本无关,核心原因是pip安装wheel包写入文件时,遇到了带emoji字符(\U0001f4f9对应摄像机emoji📹)的文件名/路径,当前环境默认使用latin-1编码,不支持Unicode范围的emoji字符,最终触发编码错误。切换Python 3.7环境无法解决问题,是因为问题出在系统locale配置、pip版本的文件处理逻辑、路径字符集这几个层面,和解释器版本没有关系。
可行解决方法
按优先级依次尝试以下操作,所有操作请先激活你自己创建的conda虚拟环境再执行,不要直接在全局base环境操作:
- 临时指定UTF-8编码执行安装命令,适配JupyterHub默认locale配置不全的问题:
LANG=C.UTF-8 LC_ALL=C.UTF-8 pip install simpletransformers
如果是在Jupyter的终端会话里操作,也可以先执行export LANG=C.UTF-8 LC_ALL=C.UTF-8全局生效当前会话的编码配置,再执行pip安装命令。 - 升级pip、setuptools、wheel到最新版本,旧版本pip存在非ASCII文件名处理的已知bug:
pip install --upgrade pip setuptools wheel
升级完成后再带上上述UTF-8环境变量重新执行安装命令。 - 手动指定pip的临时目录、缓存目录到纯英文无特殊字符的自定义路径,避免默认路径下的特殊字符触发编码问题:
- 先在个人用户目录下创建专用的临时、缓存文件夹:
mkdir -p ~/pip_temp ~/pip_cache - 执行安装时指定路径和编码:
TMPDIR=~/pip_temp PIP_CACHE_DIR=~/pip_cache LANG=C.UTF-8 LC_ALL=C.UTF-8 pip install simpletransformers
- 先在个人用户目录下创建专用的临时、缓存文件夹:
- 如果以上pip安装方案全部失效,改用conda从conda-forge源安装,conda的包解析和文件写入逻辑对非ASCII字符兼容性更好:
conda install -c conda-forge simpletransformers
注意:如果安装时出现权限类报错,不要加
sudo强制安装,JupyterHub共享环境下sudo操作会破坏全局环境配置,优先检查虚拟环境是否正常激活、自定义目录的读写权限是否正常。
内容的提问来源于stack exchange,提问作者maarten van hove
相关产品推荐
相关产品推荐

