Python3中PyICU导入报错:libicui18n.so.58缺失,求因及解决方案
libicui18n.so.58缺失错误 报错原因
你遇到的ImportError: libicui18n.so.58: cannot open shared object file: No such file or directory,本质是PyICU依赖的ICU系统库文件找不到或者版本不匹配。这并不是PyICU不能在conda环境中使用,而是你可能用pip直接安装了PyICU,而pip没有自动处理conda环境里的ICU依赖——PyICU需要和系统/环境中安装的ICU库版本严格对应,libicui18n.so.58就是ICU 58版本的国际化组件库,你的conda环境里没装这个版本的ICU,或者路径没被识别到。
解决方案
下面是几个靠谱的解决步骤,按顺序试:
先卸载现有问题版本的PyICU
在conda环境的终端里执行:pip uninstall -y pyicu用conda-forge频道安装PyICU(推荐)
conda-forge维护的PyICU包会自动处理所有依赖,包括对应的ICU库,直接在终端执行:conda activate tensorflow conda install -c conda-forge pyicu这个命令会自动安装匹配版本的ICU库和PyICU,完美解决版本不匹配的问题。
如果PyCharm还是识别不到,检查环境变量
有时候PyCharm的运行配置没有继承conda环境的库路径,你可以手动添加LD_LIBRARY_PATH:- 打开PyCharm的「Run/Debug Configurations」
- 在「Environment variables」里添加:
LD_LIBRARY_PATH=/home/pankaja/anaconda3/envs/tensorflow/lib:$LD_LIBRARY_PATH
这样就能让Python找到conda环境里的ICU库文件了。
备选方案:先装ICU再装PyICU
如果上面的命令有问题,也可以先单独安装ICU库,再装PyICU:conda install -c conda-forge icu=58 pip install pyicu不过这个需要严格对应版本,不如直接用conda装PyICU省心。
验证
安装完成后,在PyCharm的Python控制台执行import icu,如果没有报错,就可以正常用PyICU处理僧伽罗语的Unicode排序啦!
内容的提问来源于stack exchange,提问作者Thidasa Pankaja

