環境
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
到虛擬目錄,如果失敗。就試一下我的解決辦法。
問題原因
不知道啥原因,猜測一下可能有如下多個原因:
- 我原來的服務器的python版本爲3.6.3,新服務器版本爲3.6.7,就差幾個小版本,也會有問題嗎??
- 目錄是
nfs4
格式掛載上去的,而且Centos7系統開了SELinux。說到SELinxu,今年中美……兩開花……。這東西的用處相比於它導致的繁瑣來說,性價比太低了,所以最好還是關了吧。
另外有大佬知道原因的,請告訴我一下。