为什么pysqlite不能正常工作?

时间:2009-09-22 13:34:18

标签: python sqlite installation pysqlite

我尝试安装pysqlite。安装过程中会出现一些可疑的东西。为什么我输入:

python setup.py build

我最后得到了以下信息:

src/module.c:286: error: ‘SQLITE_PRAGMA’ undeclared here (not in a function)
src/module.c:287: error: ‘SQLITE_READ’ undeclared here (not in a function)
src/module.c:288: error: ‘SQLITE_SELECT’ undeclared here (not in a function)
src/module.c:289: error: ‘SQLITE_TRANSACTION’ undeclared here (not in a function)
src/module.c:290: error: ‘SQLITE_UPDATE’ undeclared here (not in a function)
src/module.c:291: error: ‘SQLITE_ATTACH’ undeclared here (not in a function)
src/module.c:292: error: ‘SQLITE_DETACH’ undeclared here (not in a function)
src/module.c: In function ‘init_sqlite’:
src/module.c:419: warning: implicit declaration of function ‘sqlite3_libversion’
src/module.c:419: warning: passing argument 1 of ‘PyString_FromString’ makes pointer from integer without a cast
error: command 'gcc' failed with exit status 1

我忽略了最后一行并决定继续。所以,我打字:

python setup.py install

而且,我再次收到类似的错误消息:

src/module.c:288: error: ‘SQLITE_SELECT’ undeclared here (not in a function)
src/module.c:289: error: ‘SQLITE_TRANSACTION’ undeclared here (not in a function)
src/module.c:290: error: ‘SQLITE_UPDATE’ undeclared here (not in a function)
src/module.c:291: error: ‘SQLITE_ATTACH’ undeclared here (not in a function)
src/module.c:292: error: ‘SQLITE_DETACH’ undeclared here (not in a function)
src/module.c: In function ‘init_sqlite’:
src/module.c:419: warning: implicit declaration of function ‘sqlite3_libversion’
src/module.c:419: warning: passing argument 1 of ‘PyString_FromString’ makes pointer from integer without a cast
error: command 'gcc' failed with exit status 1

之后我想试试pysqlite是否有效。 如果在python-command-line模式下输入

from pysqlite2 import *

Python不抱怨。但是,如果我试着遵循我的书中的例子:

from pysqlite2 import dbapi2 as sqlite

我收到错误消息:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "pysqlite2/dbapi2.py", line 27, in <module>
    from pysqlite2._sqlite import *
ImportError: No module named _sqlite

有没有人知道它为什么会发生以及如何解决这个问题。顺便说一下,我已经安装了新版本的Python。 “python -V”给了我“Python 2.6.2”。提前感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

  

我忽略了最后一行并决定继续。

你不能忽略最后一行。它告诉你有一个错误,所以它无法编译。你运行的下一件事告诉你它无法安装,因为它无法编译。然后,你的python告诉你它无法运行代码,因为它没有安装。在继续安装之前,您需要使编译步骤正常工作。

答案 1 :(得分:2)

需要编译python扩展的课程,您使用哪种发行版?您似乎缺少具有给定宏定义的sqlite标头。当python安装程序运行时,它会编译绑定到sqlite本机二进制文件并将一些.py文件复制到库中。 _sqlite通常是一个.pyd文件(相当于一个dll),它调用了sqlite库,在你没有构建的情况下。

检查是否存在sqlite标题等。

答案 2 :(得分:2)

现在可以在网站上找到构建pysqlite的正确方法。

$ tar xvfz <version>.tar.gz 
$ cd <version> 
$ python setup.py build_static install 

build_static将下载最新的sqlite代码并对其进行静态编译。我只是在1and1共享主机上执行此操作。

http://trac.edgewall.org/wiki/PySqlite#Buildingpysqlite