首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >pip3抛出未定义的符号: XML_SetHashSalt

pip3抛出未定义的符号: XML_SetHashSalt
EN

Stack Overflow用户
提问于 2020-08-14 14:11:22
回答 4查看 7.9K关注 0票数 5

我在oracle EL7上安装了python3.6.8,我使用

代码语言:javascript
运行
复制
yum install python36-pip

然而,当我调用pip3时,它出现了库错误。

代码语言:javascript
运行
复制
pip3

Traceback (most recent call last):
  File "/bin/pip3", line 8, in <module>
    from pip import main
  File "/usr/lib/python3.6/site-packages/pip/__init__.py", line 42, in <module>
    from pip.utils import get_installed_distributions, get_prog
  File "/usr/lib/python3.6/site-packages/pip/utils/__init__.py", line 27, in <module>
    from pip._vendor import pkg_resources
  File "/usr/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 35, in <module>
    import plistlib
  File "/usr/lib64/python3.6/plistlib.py", line 65, in <module>
    from xml.parsers.expat import ParserCreate
  File "/usr/lib64/python3.6/xml/parsers/expat.py", line 4, in <module>
    from pyexpat import *
ImportError: /usr/lib64/python3.6/lib-dynload/pyexpat.cpython-36m-x86_64-linux-gnu.so: undefined symbol: XML_SetHashSalt

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/bin/pip3", line 12, in <module>
    from pip._internal import main
  File "/usr/lib/python3.6/site-packages/pip/__init__.py", line 42, in <module>
    from pip.utils import get_installed_distributions, get_prog
  File "/usr/lib/python3.6/site-packages/pip/utils/__init__.py", line 27, in <module>
    from pip._vendor import pkg_resources
  File "/usr/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 35, in <module>
    import plistlib
  File "/usr/lib64/python3.6/plistlib.py", line 65, in <module>
    from xml.parsers.expat import ParserCreate
  File "/usr/lib64/python3.6/xml/parsers/expat.py", line 4, in <module>
    from pyexpat import *
ImportError: /usr/lib64/python3.6/lib-dynload/pyexpat.cpython-36m-x86_64-linux-gnu.so: undefined 
symbol: XML_SetHashSalt

我试图看看是否有任何替代pyexpat.*.so,但似乎没有做ldd在最后一行是输出

代码语言:javascript
运行
复制
[root@whf00jkd python3.6]# ldd  /usr/lib64/python3.6/lib-dynload/pyexpat.cpython-36m-x86_64-linux-gnu.so
        linux-vdso.so.1 =>  (0x00007ffd76bf9000)
        libexpat.so.1 => /scratch/oraofss/app/oraofss/product/18.0.0/client_1/lib/libexpat.so.1 (0x00007fec3a94a000)
        libpython3.6m.so.1.0 => /lib64/libpython3.6m.so.1.0 (0x00007fec3a422000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fec3a206000)
        libc.so.6 => /lib64/libc.so.6 (0x00007fec39e38000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007fec39c34000)
        libutil.so.1 => /lib64/libutil.so.1 (0x00007fec39a31000)
        libm.so.6 => /lib64/libm.so.6 (0x00007fec3972f000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fec3ad81000)

我搜索了libexpat.so.1

代码语言:javascript
运行
复制
[root@whf00jkd python3.6]# whereis libexpat.so.1
libexpat.so: /usr/lib/libexpat.so.1 /usr/lib/libexpat.so /usr/lib64/libexpat.so.1 /usr/lib64/libexpat.so
[root@whf00jkd python3.6]# ls -ltr /usr/lib/libexpat.so.1
lrwxrwxrwx. 1 root root 17 Apr  1  2019 /usr/lib/libexpat.so.1 -> libexpat.so.1.6.0
[root@whf00jkd python3.6]# ls -ltr /usr/lib64/libexpat.so.1
lrwxrwxrwx. 1 root root 17 Apr  1  2019 /usr/lib64/libexpat.so.1 -> libexpat.so.1.6.0

添加了一个链接libexpat.so.1 -> /usr/lib/libexpat.so.1 in /usr/lib 64/python3.6/lib-dynload/但这并不能消除错误。

请帮帮忙

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-08-17 06:52:30

libexpat.so.1指向错误的位置。用

代码语言:javascript
运行
复制
export LD_LIBRARY_PATH=/lib64/:${LD_LIBRARY_PATH}
代码语言:javascript
运行
复制
ldd /usr/lib64/python3.6/lib-dynload/pyexpat.cpython-36m-x86_64-linux-gnu.so
        linux-vdso.so.1 =>  (0x00007fff073f1000)
        libexpat.so.1 => /lib64/libexpat.so.1 (0x00007f9ba53ce000)
        libpython3.6m.so.1.0 => /lib64/libpython3.6m.so.1.0 (0x00007f9ba4ea9000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f9ba4c8d000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f9ba48bf000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f9ba46bb000)
        libutil.so.1 => /lib64/libutil.so.1 (0x00007f9ba44b8000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f9ba41b6000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f9ba5807000)
票数 8
EN

Stack Overflow用户

发布于 2021-06-15 12:02:00

我也犯了同样的错误。

系统信息

  • VM与CentOS 7.9
  • 3.6

溶液

我们安装了另一个软件,它带来了自己版本的libexpat。我们还修改了env变量LD_LIBRARY_PATH以包含该软件的lib目录。这导致pip加载错误的库。

在取消LD_LIBRARY_PATH /从LD_LIBRARY_PATH中删除该软件后,一切都很好。

票数 3
EN

Stack Overflow用户

发布于 2021-03-23 15:17:36

这就是为我解决问题的原因。我使用Python3.6并尝试使用PIP安装一个模块。我得到了下面的错误。

/opt/rh/rh-python36/root/usr/lib64/python3.6/lib-dynload/pyexpat.cpython-36m-x86_64-linux-gnu.so:未定义符号:ImportError:XML_SetHashSalt

给出ldd之后的路径,以找到映射。

ldd /opt/rh/rh-python36/root/usr/lib64/python3.6/lib-dynload/pyexpat.cpython-36m-x86_64-linux-gnu.so

检查- libexpat.so.1的映射。在我的例子中,它指的是不正确的甲骨文路径-- /u01/oracle/product/12.1.0.2/lib/libexpat.so.1

因此,我在上面的目录中重命名了libexpat.so.1。

重命名后,再次给ldd,它应该指向/lib64 64/libexpat.so.1。

一旦映射被纠正,我就能够完成pip安装。

谢谢大家的帮助。

帮助我的链接:

https://ubuntuforums.org/showthread.php?t=2094005

https://askubuntu.com/questions/546654/python-error-when-opening-software-center

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

https://stackoverflow.com/questions/63414448

复制
相关文章

相似问题

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