2013-04-15 3 views
0

Я пишу простой скрипт Python, который извлекает данные из базы данных sqlite3. У меня возникает следующая ошибка:Изменить версию SQlite3, используемую Python 2.6 на Mac 10.6.8

sqlite3.DatabaseError: file is encrypted or is not a database 

Я выяснил, что эта ошибка вызвана проблемой версии sqlite3. На Mac (10.6.8) мне сейчас нужно использовать версию SQLite 3.6.12. Я загрузил SQLite 3.7.16.2 и могу открыть базу данных с этой версией. Но как я могу сказать Python использовать нестандартную версию SQLite в этом скрипте?

Я использую

Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin 

В конце концов я буду использовать Ubuntu для этого проекта, но для целей тестирования мне нужно запустить скрипт на этой конкретной конфигурации Mac. Спасибо за помощь!

ответ

2

Другой вариант - установить новый Python. Например, текущие установщики python.org Python 2.7.4 (доступны here) поставляются с SQLite 3.7.13.

$ /usr/local/bin/python2.7 
Python 2.7.4 (v2.7.4:026ee0057e2d, Apr 6 2013, 11:43:10) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import sqlite3 
>>> sqlite3.sqlite_version_info (3, 7, 13) 
1

Вы можете использовать переменную окружения DYLD_LIBRARY_PATH, чтобы поместить каталог заменяемого sqlite ранее в пути поиска. См. man dyld. Это похоже на LD_LIBRARY_PATH на Linux.

+0

Это может работать или не работать в зависимости от того, как создается библиотека замены. –

+1

Спасибо за этот ответ, но для этого потребуется построить sqlite3 как dyld - поэтому я решил скачать 2.7, который также решает проблему. – birgit

Смежные вопросы