最近,在Centos 6上使用python 2.6.6導入smtplib和psycopg2時,我已經開始出現分段錯誤。它只會在smtplib之前導入psycopg2。在psycopg2之後導入smtplib時出現分段錯誤
例如,這工作得很好:
import smtplib
import psycopg2
這將導致分段錯誤:
import psycopg2
import smtplib
要嘗試調試,我安裝faulthandler跑這樣的:
import faulthandler
faulthandler.enable()
import psycopg2
import smtplib
當我運行這個,我得到以下輸出:
Fatal Python error: Segmentation fault
Current thread 0xb7714940 (most recent call first):
File "/usr/lib/python2.6/socket.py", line 50 in <module>
File "/usr/lib/python2.6/smtplib.py", line 44 in <module>
File "testpython.py", line 6 in <module>
Segmentation fault
這指向socket.py作爲罪犯。我看着第50行,它只是導入_ssl。爲了進一步調試,我跑了這一點:
import psycopg2
import _ssl
它還分段錯誤以同樣的方式,所以在導入psycopg2後_ssl進口的問題,但我不能確定如何糾正它。我嘗試重新安裝psycopg2,然後卸載它並使用pip進行安裝,但問題仍然存在。任何幫助解決這個問題將不勝感激。
您正在使用Python 2.6,請嘗試升級以查看問題是否仍然存在。 – 2014-10-04 10:43:54
這是一個很好的建議,但我不能真正升級。 Yum依賴於python 2.6,所以我必須小心,而不是替換2.6。我可以安裝2.7和2.6,但是隨後我需要重新安裝我們在任何地方使用的所有模塊,並測試以確保所有生產腳本在2.7下仍能正常運行。這將是一個漫長的過程。 – Rhino 2014-10-06 14:05:28
試圖解決分段錯誤也不是一個快速的過程。我敢打賭,它比平行安裝Python 2.7更長的時間,然後把你的項目指向它。它只是建立虛擬環境,然後安裝每個項目的需求;一個簡單的bash腳本可以在幾分鐘內處理它。如果你配置一個全局點子緩存,那麼你不會再重新下載東西,節省你更多的時間。此外,它比現在的解決方案少得多。 – 2014-10-06 15:07:58