1

我在OSX 10.6上,最近把我的Python從2.6升級到了2.7,所以我不得不升級python軟件包。pysqlite分割錯誤?

這次我決定用brew來安裝sqlite,libspatialite和spatialite-tools,並且用brew doctor表示一切正常。那時候我啓動我的本地開發服務器(Django 1.4)時,它抱怨現有的pysqlite不支持擴展加載(這是SpatiaLite所要求的)。

然後我下載pysqlite-2.6.3,解壓,使配置變化,使擴展裝載,然後做:

python setup.py build_static 
python setup.py install 

描述here

當我運行開發服務器,現在我得到一個「分段錯誤」。

def trace(frame, event, arg): 
    print "%s, %s:%d" % (event, frame.f_code.co_filename, frame.f_lineno) 
    return trace 

sys.settrace(trace) 

段故障前的幾行是如下:

... 
call, /Users/omat/workspace/devspaces/env/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py:71 
line, /Users/omat/workspace/devspaces/env/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py:71 
call, /Users/omat/workspace/devspaces/env/lib/python2.7/encodings/utf_8.py:15 
line, /Users/omat/workspace/devspaces/env/lib/python2.7/encodings/utf_8.py:16 
return, /Users/omat/workspace/devspaces/env/lib/python2.7/encodings/utf_8.py:16 
return, /Users/omat/workspace/devspaces/env/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py:71 
Segmentation fault 

什麼任何想法,這並沒有告訴太多,我只是導入語句後添加settrace到Django的manage.py可能是錯誤的,一些幫助非常感謝。謝謝。

回答

2

很可能你有一個不兼容的SQLite或Python SQLite本地綁定庫與你的Python混合使用。

在Python升級後重新安裝問題中的所有軟件包。

如果你想避免這樣的問題,我的建議是使用託管環境來安裝Python,SQLite和Python綁定,其中所有的軟件包都來自同一個源代碼,例如Homebrew。

如果您在此環境之外手動安裝軟件包,請確保在編譯本機庫時使用正確的Python庫和Python頭文件。也就是說,如果您使用Homebrew的庫,請使用Homebrew提供的Python和Python頭文件,而不是OSX默認值。

如何跟蹤段錯誤在Python

http://wiki.python.org/moin/DebuggingWithGdb

這會告訴你的實際問題,並在出現故障問題的各個庫。