服务器上启动pip报错问题

服务器上想用pip3安装个pandas跑程序。结果一直报错:

Traceback (most recent call last):
  File "/usr/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

参考文章:https://stackoverflow.com/questions/63414448/pip3-throws-undefined-symbol-xml-sethashsalt

解决方案:在命令行里敲 LD_LIBRARY_PATH=/lib64/:$PATH 。pip3可以正常启动。

-----------------------------------------分割线------------------------------------------

在后续的使用中,发现每次xshell连上服务器后,依旧会报上面的错,重新输入上述指令后,才可以正常使用。

其原因见这里:https://www.cnblogs.com/trying/archive/2013/06/07/3123577.html

LD_LIBRARY_PATH变量是临时设置的,因此每次断开sh连接后,设定失效,需要重新设定。

这里选用的方法是:

  1. 打开~/.bashrc文件
  2. 写入
LD_LIBRARY_PATH=/lib64/:$PATH

这里没有使用文章中提到的export,我对export的必要性不明了。便写入了前文中的指令。

不过不写export好像没有效果,我后面找时间测一测

总结一下,服务器上报undefined symbol: XML_SetHashSalt错时,很大可能是因为LD_LIBRARY_PATH变量不包含扩展包的路径。因此需要设定该变量。又每次断开重连服务器时,该变量还原,因此需要反复设定该变量。而~/.bashrc文件中写入的指令在每次启动sh时都会自动执行,因此将设定环境变量的指令写入此文件中,后面再连服务器跑脚本时,就没再报过该错误。

原文地址:https://www.cnblogs.com/kang-mei-208/p/14077442.html