如何解决pip3抛出未定义的符号:XML_SetHashSalt
我在oracle Linux EL7上具有python 3.6.8 我使用
安装了pip3yum install python36-pip
但是,当我调用pip3时,它出现库错误
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",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是输出
[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
[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 在/usr/lib64/python3.6/lib-dynload/中,但这不能消除错误
请帮助
解决方法
libexpat.so.1指向错误的位置修复了 导出LD_LIBRARY_PATH = / lib64 /:$ PATH
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)
,
这就是为我解决问题的原因。我使用的是 Python 3.6,并尝试使用 PIP 安装模块。我收到以下错误。
导入错误:/opt/rh/rh-python36/root/usr/lib64/python3.6/lib-dynload/pyexpat.cpython-36m-x86_64-linux-gnu.so:未定义符号: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 的映射。就我而言,它指的是不正确的 oracle 路径 -- /u01/oracle/product/12.1.0.2/lib/libexpat.so.1
所以我把上面目录下的libexpat.so.1重命名了
重命名后,再次给ldd,它应该指向/lib64/libexpat.so.1
一旦映射得到纠正,我就可以进行 pip install。
感谢大家的帮助。
对我有帮助的链接:
https://ubuntuforums.org/showthread.php?t=2094005
https://askubuntu.com/questions/546654/python-error-when-opening-software-center
,我遇到了完全相同的错误。
系统信息
- 带有 CentOS 7.9 的虚拟机
- Python 3.6
解决方案
我们安装了另一个软件,它带有自己的 libexpat 版本。我们还修改了环境变量 LD_LIBRARY_PATH 以包含该软件的 lib 目录。这导致 pip 加载错误的库。
在取消设置 LD_LIBRARY_PATH/从 LD_LIBRARY_PATH 中删除软件后,一切都很好。
,您是如何安装Python 3的?在我的Oracle Linux 7安装中,我从yum.oracle.com上的ol7_latest安装了python3:
$ yum info python3
Installed Packages
Name : python3
Arch : x86_64
Version : 3.6.8
Release : 13.0.1.el7
Size : 39 k
Repo : installed
From repo : ol7_latest
未安装 python36-pip,pip3可以正常工作,例如:
$ pip3 install --user cx_Oracle
Collecting cx_Oracle
Using cached https://files.pythonhosted.org/packages/16/1d/36ecde56e0522f1a1cea7b4d4333f88b1062e0c5287fc67f522ceacc053c/cx_Oracle-8.0.0-cp36-cp36m-manylinux1_x86_64.whl
Installing collected packages: cx-Oracle
Successfully installed cx-Oracle-8.0.0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。