Почему pysqlite не работает должным образом? - PullRequest
1 голос
/ 22 сентября 2009

Я пытался установить 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 я набираю

from pysqlite2 import *

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

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 ]

3 голосов
/ 22 сентября 2009

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

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

2 голосов
/ 19 ноября 2010

Правильный способ построения 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

2 голосов
/ 22 сентября 2009

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

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

...