与Python分割故障与安装PyICU的

问题描述 投票:1回答:1

我一直在试图安装一个名为多语种一个Python库,而这又需要PyICU,我的困境的根源。错误的大雁追逐后,我能在我的EC2实例安装PyICU。但是,在运行多语种时,反过来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。

任何帮助都将是非常感谢!

python importerror glibc icu pyicu
1个回答
1
投票

如果你只是想尝试,你可以使用红帽企业版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与自定义副本++库。这会破坏系统软件和第三方应用程序。

你应该尝试让你尝试安装已建成了红帽企业Linux 7(甚至是红帽企业Linux 6)软件的副本。这将是更容易使用,并避免所有这些问题。如果软件使用较新的C ++标准比C ++编写的98,可以使用Developer Toolset。它有一个混合连接模式,静态链接所需的较新的C ++标准支持代码,同时仍然使用该系统的libstdc ++对于其余部分,以最大化互操作性。

© www.soinside.com 2019 - 2024. All rights reserved.