首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安装PyICU时出现的Python分段故障

安装PyICU时出现的Python分段故障
EN

Stack Overflow用户
提问于 2019-02-09 00:15:33
回答 1查看 174关注 0票数 1

我一直在尝试安装一个名为Polyglot的Python库,这反过来又需要PyICU,这就是我的问题的根源。经过一次次的错误追逐,我终于能够在我的EC2实例上安装PyICU了。然而,当运行Polyglot,进而运行PyICU时,我得到了以下错误:

代码语言:javascript
复制
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)

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

代码语言:javascript
复制
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时,我立即得到了一个分段错误。

请注意,我在亚马逊EC2上使用的是RedHat7.1.2-2。

任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-10 01:38:54

如果您只是想尝试一下,可以使用Red Hat Enterprise Linux8测试版,它随glibc2.28一起提供,因此提供了GLIBC_2.18符号。

如果您使用显式加载器调用(例如/opt/glibc-2.18/lib64/ld-linux-x86-64.so.2 python …)运行Python,那么分段错误就会消失。如果你想进入这个方向,你真的应该使用上游仍然维护的较新版本的glibc (比如目前的glibc 2.28 ),理想情况下使用Git的发布分支,因为它有许多修复各种bug的后端口。

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54596362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档