发布
社区首页 >问答首页 >pysqlite分割错误?

pysqlite分割错误?
EN

Stack Overflow用户
提问于 2012-09-11 19:17:35
回答 2查看 1.3K关注 0票数 1

我使用的是OSX 10.6,最近将我的Python从2.6升级到2.7,所以我不得不升级python包。

这一次,我决定使用brew,并在brew中安装了sqlite、libspatialite和spatialite-tools,brew doctor说一切正常。当我启动本地开发服务器(Django1.4)时,它抱怨现有的pysqlite不支持扩展加载(这是SpatiaLite所需的)。

然后我下载了pysqlite-2.6.3,解压,进行配置更改以启用扩展加载,然后这样做:

代码语言:javascript
代码运行次数:0
复制
python setup.py build_static
python setup.py install

here所述。

当我运行开发服务器时,现在我得到了一个“分段错误”。因为这并不能说明什么,所以我在导入语句之后添加了settrace到Django的manage.py中:

代码语言:javascript
代码运行次数:0
复制
def trace(frame, event, arg):
    print "%s, %s:%d" % (event, frame.f_code.co_filename, frame.f_lineno)
    return trace

sys.settrace(trace)

分段故障前的几行如下:

代码语言:javascript
代码运行次数:0
复制
...
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

任何关于哪里可能出错的想法和一些帮助都是非常感谢的。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-11 19:25:54

最有可能的情况是,您的SQLite中混合了一个不兼容的Python或Python原生绑定库。

在Python升级后重新安装问题中的所有包。

如果你想完全避免这样的问题,我的建议是使用托管环境安装Python、SQLite和Python绑定,其中所有的包都来自相同的来源,比如来自Homebrew。

如果您在此环境之外手动安装包,请确保在编译本机库时使用正确的Python库和Python头文件。也就是说,如果您使用来自Homebrew的库,请使用Homebrew提供的Python和Python头文件,而不是OSX默认值。

如何在Python中跟踪段错误

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

这将告诉您实际的问题和问题中失败的单个库。

票数 2
EN

Stack Overflow用户

发布于 2018-08-29 20:42:39

我最近(2018)在各种系统环境中使用新创建的Python virtualenv遇到了这个问题。

段故障的原因最初是通过安装Python包faulthander,并修改我的站点的manage.py来激活它来隔离到SQLite的,因此:

代码语言:javascript
代码运行次数:0
复制
import faulthandler
faulthandler.enable()

我第一次遇到这个问题是在MacOS上,使用的是一个老版本的Python (我忘了是哪个版本了,大概是2.7.12)。在这种情况下,通过升级到Python 2.7.15并重新生成virtualenv解决了这个问题。

接下来是在运行Python 2.7.5的Ubuntu 14.04上。我认为这是由于旧版本的Ubuntu我升级到了16.04和Python 2.7.12,但问题仍然存在。在这种情况下,我想坚持使用Python的标准发行版安装。

This Django ticket建议使用较旧版本的SQLite (我猜测该版本与较旧的Python发行版一起提供)存在问题,并且还包含一个指向this Gist的链接,该链接解释了如何将SQLite for Python升级到可运行的版本。

总之,在装有Python 2.7.12的Ubuntu 16.04上:

  1. 安装必备软件包:

sudo apt-get install python-dev sudo apt-get安装libsqlite3-dev

  • Create并激活一个新的Python virtualenv.

  • Create,然后转到一个工作目录;

mkdir ~/sqlite cd ~/ sqlite

在这一点上,我能够安装我的软件并运行测试,没有任何问题(好吧,没有任何问题,不是我自己造成的:-o)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12368491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档