Как я могу обновить пакет sqlite3 в Python 2.6? - PullRequest
9 голосов
/ 26 июля 2010

Я использовал Python 2.6.5 для сборки своего приложения, которое поставлялось с sqlite3 3.5.9.Хотя, как я выяснил в другом моем вопросе, поддержка внешнего ключа не была введена в sqlite3 до версии 3.6.19.Однако Python 2.7 поставляется с sqlite3 3.6.21, так что эта работа - я решил, что хочу использовать внешние ключи в своем приложении, поэтому я попытался обновить систему до Python 2.7.

Я использую Twisted, и яне смог на всю жизнь заставить его построить.Twisted использует zope.interface, и я не могу найти zope.interface для Python 2.7 - я подумал, что он все равно может «работать», но мне придется просто скопировать все файлы на себя и заставить все работать самостоятельно,вместо того, чтобы просто использовать самоустанавливающиеся пакеты.

Поэтому я подумал, что было бы разумнее просто пересобрать python 2.6 и связать его с новой версией sqlite3.Но я не знаю, как -

Как бы я это сделал?

У меня установлена ​​Visual Studio 2008 в качестве компилятора, я прочитал, что это единственный, который действительно поддерживается дляWindows, и я использую 64-разрядную операционную систему

Ответы [ 3 ]

6 голосов
/ 27 июля 2010

загрузите последнюю версию sqlite3.dll с веб-сайта sqlite и замените файл sqlite3.dll в каталоге python.

3 голосов
/ 26 июля 2010

sqlite3 не является встроенным модулем; это модуль расширения (двоичный файл - C: \ Python26 \ DLLs_sqlite3.pyd (на моей машине)). Pyd - это DLL с другим расширением имени файла и только 1 точкой входа. Есть также sqlite3.dll, который содержит код SQLite. python.exe не связан ни с одним из них, поэтому перекомпоновка python.exe не имеет смысла.

Следующая идея - перейти на сайт загрузки pysqlite2 и получить последнюю версию установщика Windows для Python 2.6. К сожалению, нет документов о том, какую версию SQLite он содержит; нужно установить его, а затем гадить о:

>>> import sqlite3 as standard
>>> from pysqlite2 import dbapi2 as latest
>>> for m in (standard, latest):
...    print m.sqlite_version
...
3.5.9
3.6.2
>>>

Таким образом, он содержит только SQLite версии 3.6.2, которая не имеет необходимой поддержки реального внешнего ключа.

Я предлагаю вам проверить список рассылки , чтобы узнать, есть ли там ответ на ваш вопрос, и если нет, спросить о возможности установщика Python 2.6, содержащего более поздний SQLite (например, тот, который включен в Python 2.7 ).

1 голос
/ 26 июля 2010

Я решил, что просто попробую, когда понял, что каждая библиотека, которую я когда-либо устанавливал в python 2.6, находится в моей папке site-packages. Я просто ... скопировал пакеты сайтов в мою версию 2.7, и она работает до сих пор. На мой взгляд, это самый простой путь, если он сработает - я посмотрю дальше, но, по крайней мере, могу продолжать развиваться сейчас.

Я не приму этот ответ, потому что он даже не отвечает на мой вопрос, но, насколько я могу судить, он решает мою проблему.

...