2009-09-22 2 views
1

Я попытался установить 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 работ. Если в режиме питон-командной строки I типа

from pysqlite2 import * 

Python не жалуется. Однако, если я пытаюсь следовать exmaple в моей книге:

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». Спасибо заранее за любую помощь.

+2

Вы знаете, что SQLite поддержка в стандартной библиотеке, не так ли? Поскольку, по крайней мере, версия python 2.5 – codeape

ответ

2

Необходим урок по сборке расширений python, какой дистрибутив вы используете? Кажется, вам не хватает заголовков sqlite с заданными макроопределениями. Когда запускается установка python, она компилирует привязки к бинарнику sqlite и копирует в библиотеку несколько файлов .py. _sqlite обычно является .pyd-файлом (эквивалентным dll), который имеет вызовы в библиотеку sqlite, в вашем случае, которая не создавалась.

Проверить наличие SQLITE заголовков и т.д.

3

Я просто проигнорировал последнюю строку и решил продолжить.

Вы не можете просто игнорировать последнюю строку. Он говорил вам, что была ошибка, поэтому она не могла скомпилироваться. Следующее, что вы запустили, говорит вам, что он не может установить, потому что он не может скомпилировать. Затем ваш python сказал вам, что он не может запустить код, потому что он не был установлен. Перед тем, как перейти к его установке, необходимо выполнить шаг компиляции.

+0

ОК. Но как скомпилировать и установить? Что означает сообщение об ошибке? – Verrtex

+0

К сожалению, я, вероятно, не могу помочь вам с его компиляцией. Лучшее, что я мог сделать, это указать на то, что это был этап компиляции, который был неудачным, и все прошлое, что не помогло в решении проблемы. – RHSeeger

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