【Python坑爹错误】undefined symbol: "_Py_LegacyLocaleDetected"

环境

Centos 7系统,python36的版本。

复现场景

首先,我们有2台服务器,共用一套用户验证的,最近新装了一台服务器,也配置了共用那套用户验证,而且用户目录都是共用的同一台机器上的home目录。
在原来的2台机器上,我的python环境用的是virtualenv的虚拟环境,没什么问题。但是今天用了在新的服务器上,当我运行python命令的时候,报以下错误:

python: symbol lookup error: python: undefined symbol: _Py_LegacyLocaleDetected

我一脸懵逼???
其他两台Centos 7能用,为啥这台就不能用?
Google了一下,基本没人遇到这个错误,有个答案是把~/venv/bin/python3的这个删掉,再复制当前系统的/usr/bin/python3到这个目录下。
刚才试了一下,又报另一个错误:

cannot create regular file: Input/Outpu error

我二脸懵逼???
查了一下,这个错误一般是没有root权限或者是硬盘出问题了,也有可能是nfs引起的。
发现自己确实是nfs挂载,不过我有root权限的。
无可奈何……
就新建了一个虚拟环境,试了一下python命令,可用。
然后想着既然从/usr/bin下复制不过来,那我在新的虚拟环境里面复制一个,于是:

cp ~/nvenv/bin/python3 ~/venv/bin/python3

竟然成功了!!!
然后我就把新的虚拟环境删掉了。

解决方法

尝试复制该服务器的/usr/bin/python3到虚拟目录,如果失败。就试一下我的解决办法。

问题原因

不知道啥原因,猜测一下可能有如下多个原因:

  1. 我原来的服务器的python版本为3.6.3,新服务器版本为3.6.7,就差几个小版本,也会有问题吗??
  2. 目录是nfs4格式挂载上去的,而且Centos7系统开了SELinux。说到SELinxu,今年中美……两开花……。这东西的用处相比于它导致的繁琐来说,性价比太低了,所以最好还是关了吧。

另外有大佬知道原因的,请告诉我一下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章