Từ ý kiến của bạn, vấn đề của bạn là cài đặt sẵn sqlite 3,7 đến cao hơn trên con đường của bạn hơn bạn của bên thứ ba 3.8 của bạn. Điều này có nghĩa là khi bạn xây dựng pysqlite2
, theo mặc định, nó sẽ tìm và sử dụng 3.7 để nó không làm bạn tốt. Và bạn có lẽ không muốn thay đổi xung quanh toàn bộ con đường của bạn chỉ để đối phó với điều này.
Nhưng điều đó là tốt, miễn là 3.8 được tìm thấy đầu tiên tại thời gian xây dựng, nó không quan trọng những gì đến trước khi chạy; đường dẫn đến 3.8 sẽ được đưa vào mô-đun. Có một số cách để làm điều này, nhưng đơn giản nhất là một cái gì đó như thế này:
$ 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'
Các LDFLAGS
và CPPFLAGS
biến đến từ các đầu ra của bước brew install sqlite3
. Nếu bạn đã cài đặt sqlite3
theo cách khác, bạn sẽ cần phải nhận được các giá trị thích hợp — có thể là /usr/local/lib
và /usr/local/include
, nhưng nếu không, hãy tìm kiếm libsqlite3.dylib
và sqlite3.h
.
Lưu ý rằng nếu bạn làm theo chính xác các bước này, bạn sẽ nhận được một phiên bản không chất béo của libsqlite3
, có nghĩa là pysqlite2
sẽ không làm việc trong chế độ 32-bit. Tôi nghi ngờ đó là một vấn đề cho bạn, nhưng nếu có, bạn chỉ có thể cài đặt nó --universal
, hoặc sử dụng một trình cài đặt khác thay vì Homebrew.
Bạn cài đặt SQLite 3.8.4.3 như thế nào? Trình cài đặt nhị phân từ sqlite.org, Homebrew, kiểm tra và xây dựng nguồn,…? – abarnert
Tôi tin rằng tôi đã thử tất cả những điều đó. Liệu người ta có chắc chắn rằng phiên bản mới được sử dụng bởi gói python? –
Không, không ai trong số họ sẽ đảm bảo mà không làm điều gì đó bổ sung. Nhưng không ai có thể cho bạn biết làm thế nào để tiến xa hơn mà không biết _which_ một trong những bạn đã làm. (Và nơi các libs kết thúc, và những gì 'PATH' của bạn trông giống như, và vv.) – abarnert