欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-26 23:46:14
...

环境

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,今年中美……两开花……。这东西的用处相比于它导致的繁琐来说,性价比太低了,所以最好还是关了吧。

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