【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,今年中美……兩開花……。這東西的用處相比於它導致的繁瑣來說,性價比太低了,所以最好還是關了吧。

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

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