执行pip3.6安装httpie时遇pyexpat未定义符号XML_SetHashSalt错误求助
解决pip3.6安装httpie时的
XML_SetHashSalt未定义符号错误 你遇到的这个错误,本质是Python的pyexpat模块和系统的expat库不兼容或损坏导致的——undefined symbol: XML_SetHashSalt说明pyexpat找不到expat库提供的必要符号,通常是expat版本过低、链接路径错误或者模块文件损坏引起的。下面是几个针对性的解决方案:
1. 先排查expat库的链接与版本
首先确认Python的pyexpat模块到底链接了哪个expat库:
ldd /usr/lib64/python3.6/xml/parsers/pyexpat.cpython-36m-x86_64-linux-gnu.so
查看输出里libexpat.so.1的路径,接着检查该库的版本:
# 针对RHEL/CentOS系统 rpm -q expat # 针对Debian/Ubuntu系统 dpkg -l libexpat1
如果expat版本低于2.1.0,就会缺少XML_SetHashSalt符号,必须升级或重新安装。
2. 重新安装expat库
如果库版本不够或者文件损坏,先修复expat:
RHEL/CentOS系统:
sudo yum reinstall expat
Debian/Ubuntu系统:
sudo apt-get install --reinstall libexpat1-dev libexpat1
3. 修复Python的pyexpat模块
如果expat库没问题,但Python的模块本身损坏,重新安装Python3.6相关包:
RHEL/CentOS系统:
sudo yum reinstall python36
源码编译的Python:
如果你的Python3.6是源码安装的,重新编译时确保绑定系统expat库:
# 进入Python3.6源码目录 ./configure --with-system-expat make && sudo make install
4. 排除环境变量干扰
有时候自定义的LD_LIBRARY_PATH会让Python链接到错误的expat库,临时移除后再试:
unset LD_LIBRARY_PATH sudo /usr/bin/pip3.6 install httpie -U
5. 用虚拟环境隔离系统问题
如果以上方法都无效,试试在虚拟环境里安装,避开系统Python的问题:
python3.6 -m venv httpie_env source httpie_env/bin/activate pip install httpie -U
内容的提问来源于stack exchange,提问作者jhon.smith
相关产品推荐
相关产品推荐

