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

这会告诉你的实际问题,并在出现故障问题的各个库。