2014-10-03 64 views
0

最近,在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進行安裝,但問題仍然存在。任何幫助解決這個問題將不勝感激。

+0

您正在使用Python 2.6,請嘗試升級以查看問題是否仍然存在。 – 2014-10-04 10:43:54

+0

這是一個很好的建議,但我不能真正升級。 Yum依賴於python 2.6,所以我必須小心,而不是替換2.6。我可以安裝2.7和2.6,但是隨後我需要重新安裝我們在任何地方使用的所有模塊,並測試以確保所有生產腳本在2.7下仍能正常運行。這將是一個漫長的過程。 – Rhino 2014-10-06 14:05:28

+0

試圖解決分段錯誤也不是一個快速的過程。我敢打賭,它比平行安裝Python 2.7更長的時間,然後把你的項目指向它。它只是建立虛擬環境,然後安裝每個項目的需求;一個簡單的bash腳本可以在幾分鐘內處理它。如果你配置一個全局點子緩存,那麼你不會再重新下載東西,節省你更多的時間。此外,它比現在的解決方案少得多。 – 2014-10-06 15:07:58

回答

0

段分割錯誤並不是Python程序員可以糾正的問題。我建議report a bug in the Python library

+0

現在,我不得不grep處理有問題的導入順序的文件,只需切換順序以避免出現分段錯誤。這有效,但不知道問題的根源有點嚇人。 – Rhino 2014-10-06 14:06:49

+0

就像更新一樣。我最近在同一臺服務器上安裝了python2.7,並且在使用Python 2.7.10時也會出現同樣的問題。 – Rhino 2015-12-07 21:19:21