python - 安装 PyICU 后 Python 出现段错误

标签 python importerror glibc icu pyicu

我一直在尝试安装一个名为 Polyglot 的 Python 库,而这又需要 PyICU,这是我的困境的根源。经过一番徒劳的错误之后,我能够在我的 EC2 实例上安装 PyICU。但是,当运行 Polyglot 和 PyICU 时,我收到以下错误:

Traceback (most recent call last):
  File "/mnt/data/anaconda3/bin/polyglot", line 11, in <module>
    load_entry_point('polyglot==16.7.4', 'console_scripts', 'polyglot')()
  File "/mnt/data/anaconda3/lib/python3.6/site-packages/pkg_resources/__init__.py", line 487, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/mnt/data/anaconda3/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2728, in load_entry_point
    return ep.load()
  File "/mnt/data/anaconda3/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2346, in load
    return self.resolve()
  File "/mnt/data/anaconda3/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2352, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/mnt/data/anaconda3/lib/python3.6/site-packages/polyglot/__main__.py", line 16, in <module>
    from icu import Locale
  File "/mnt/data/anaconda3/lib/python3.6/site-packages/icu/__init__.py", line 37, in <module>
    from _icu import *
ImportError: /lib64/libc.so.6: version `GLIBC_2.18' not found (required by /home/linuxbrew/.linuxbrew/lib/libstdc++.so.6)

为了解决上述问题,我执行了以下步骤:

mkdir ~/glibc_install; cd ~/glibc_install 
wget http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz
tar zxvf glibc-2.18.tar.gz
cd glibc-2.18
mkdir build
cd build
../configure --prefix=/opt/glibc-2.18
make -j4
make install
export LD_LIBRARY_PATH=/opt/glibc-2.18/lib

但是当我简单地运行 Python 时,我立即遇到了段错误。

请注意,我在 AWS EC2 上使用 Red Hat 7.1.2-2。

任何帮助都将不胜感激!

最佳答案

如果您只是想进行实验,可以使用 Red Hat Enterprise Linux 8 测试版,它附带 glibc 2.28,因此提供了 GLIBC_2.18 符号。

如果您使用显式加载器调用运行Python(例如/opt/glibc-2.18/lib64/ld-linux-x86-64.so.2 python ... )。如果你想朝这个方向发展,你真的应该使用上游仍在维护的最新版本的 glibc(例如此时的 glibc 2.28),并且最好是来自 Git 的发布分支,因为它有许多向后移植来修复各种错误。

但下一个问题是您试图用自定义副本替换系统 libstdc++ 库。这可能会破坏系统软件和第三方应用程序。

您应该尝试获取您尝试安装的为 Red Hat Enterprise Linux 7(甚至 Red Hat Enterprise Linux 6)构建的软件的副本。它将更容易使用,并避免所有这些问题。如果软件是使用比 C++98 更新的 C++ 标准编写的,则可以使用 Developer Toolset 。它具有混合链接模型,静态链接较新的 C++ 标准所需的支持代码,同时仍使用系统 libstdc++ 来完成其余部分,以最大限度地提高互操作性。

关于python - 安装 PyICU 后 Python 出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54596362/

相关文章:

python - 在 Ubuntu 18.04 上安装 CNTK for Python 3.6

python - 从其他文件夹 python 导入模块(错误)

python - 属性错误: 'module' object has no attribute 'openSPI'

python - 搜索两个范围之间的配置文件

java从命令行编译

C_icap 与 pthread 链接时出错

c - 如何获取函数在调用栈中的位置?

Python - flask : Static folder outside root directory

python - Bokeh:在散点图上使用框选择后如何更新数据表?

c - hsearch_r 是线程安全的吗?