2014-10-13 8 views
5

Chciałbym użyć wersji SQLite 3.8 z Python, ale moduł SQLite3 używa nieaktualnej wersji. Zainstalowałem wersję SQLite 3.8.4.3 na moim Macu, ale sqlite3.sqlite_version nadal zwraca 3.7.13.Jak uaktualnić wersję SQLite używaną przez moduł SQLite3 Pythona na komputerze Mac?

Zrobiłem sporo wyszukiwania na SO i gdzie indziej, ale nie mogę znaleźć ostatecznej odpowiedzi.

Dzięki!

+0

Jak zainstalowałeś SQLite 3.8.4.3? Instalator binarny z sqlite.org, Homebrew, sprawdź i skompiluj źródło, ...? – abarnert

+0

Wierzę, że spróbowałem tych wszystkich. Czy upewnisz się, że nowa wersja jest używana przez pakiet Pythona? –

+0

Nie, żaden z nich nie upewni się, robiąc coś dodatkowego. Ale nikt nie może ci powiedzieć, jak postępować dalej, nie wiedząc, co zrobiłeś. (I gdzie skończyły się libs i jak wygląda twoja 'PATH', itd.). – abarnert

Odpowiedz

1

Z twoich komentarzy, Twój problem jest to, że preinstalowany SQLite 3.7 pochodzi wyższy niż na ścieżce swojej strony trzeciej 3.8. Oznacza to, że domyślnie po zainstalowaniu pysqlite2 znajdzie i użyje tego 3,7, więc nic ci to nie pomoże. I prawdopodobnie nie chcesz zmieniać całej swojej ścieżki tylko po to, aby sobie z tym poradzić.

Ale to dobrze, tak długo, jak 3.8 znajduje się pierwszy w czasie kompilacji, nie ma znaczenia, co jest pierwsze w czasie wykonywania; ścieżka do 3.8 zostanie wypalona w module. Istnieje wiele sposobów, aby to zrobić, ale najprostszą jest coś takiego:

$ brew install sqlite3 
$ sudo -s 
# LDFLAGS=-L/usr/local/opt/sqlite/lib CPPFLAGS=-I/usr/local/opt/sqlite/include pip2.7 install pysqlite 
# ^D 
$ python 
>>> import sqlite3 
>>> sqlite3.sqlite_version 
'3.7.13' 
>>> import pysqlite2.dbapi2 
>>> pysqlite2.dbapi2.sqlite_version 
'3.8.6' 

W LDFLAGS i CPPFLAGS zmienne pochodzą z wyjściem kroku brew install sqlite3. Jeśli zainstalowałeś sqlite3 w inny sposób, musisz uzyskać odpowiednie wartości - prawdopodobnie /usr/local/lib i /usr/local/include, ale jeśli nie, wyszukaj libsqlite3.dylib i sqlite3.h.

Zauważ, że jeśli się dokładnie tych czynności, dostaniesz wersję beztłuszczowej od libsqlite3, co oznacza, że ​​pysqlite2 nie będzie działać w trybie 32-bitowym. Wątpię, aby to było dla ciebie problemem, ale jeśli tak jest, możesz po prostu go zainstalować --universal lub użyć innego instalatora zamiast Homebrew.

0

Myślę, że najłatwiej jest zaktualizować swój Python do najnowszej wersji, ponieważ sqlite3 jest dostarczany z Pythonem.

W przeciwnym razie należy zaktualizować także pakiet pysqlite. Pod Linuksem jest prekompilowany pakiet python-sqlite.

Możesz to zrobić, używając easy_install. Do zbudowania tego pakietu potrzebujesz pakietów. Niesamowicie zbuduj pysqlite z nową zainstalowaną wersją sqlite3, w twoim przypadku 3.8.4.3.

sudo easy_install pysqlite 

lub

sudo pip install --upgrade pysqlite 
+0

Próbowałem tego, ale bez powodzenia. Czy muszę coś zrobić, aby nowa instalacja pakietu pysqlite została zbudowana przy użyciu nowej wersji sqlite3? –

+0

Musisz mieć pewność, że twoje proste polecenie sqlite odwołuje się do nowego. W wyjściu z budynku może być wskazówka, której wersji użyto. Znalazłem podobne [pytanie] (https://stackoverflow.com/questions/10984403/how-to-update-python-sqlite-on-mac-osx). – wenzul

+1

'easy_install' (a) jest przestarzały i (b) wymaga' setuptools' tak samo jak 'pip' (w rzeczywistości jest częścią' setuptools'), więc naprawdę nie powinieneś go polecać. – abarnert

Powiązane problemy