Sự cố khi nâng cấp phiên bản Sqlite3 trên CentOS cho Python
Tôi có CentOS 6trên hệ thống của mình và tôi đang cố gắng cập nhật SQLite cho Python. Tôi đã cài đặt nó từ nguồn và thực hiện sqlite --versiontrả về phiên bản 3.33.0như mong đợi.
Tuy nhiên, khi tôi cố gắng kiểm tra phiên bản Python SQLite bằng cách sử dụng, import sqlite3; sqlite3.sqlite_version;tôi vẫn nhận được phiên bản SQLite trước đó 3.6.20.
Software Locations:
Python 3.6.9 - /usr/bin/python3
Sqlite3 - /usr/bin/sqlite3
Tôi đã thử giải pháp ở đây , điều này không hoạt động chút nào, sau khi cập nhật LD_LIBRARY_PATHvà kiểm tra phiên bản python SQLite, nó vẫn cho '3.6.20' và ở đây , khi tôi thử sudo LD_RUN_PATH=, nó cho tôi lỗi No such file or directory, nhưng khi tôi thực thi nó không có sudo LD_RUN_PATH=, nó biên dịch thành công nhưng vẫn cung cấp cho tôi SQLite '3.6.20' (Python được biên dịch mà không cần gỡ cài đặt).
Lưu ý: Tôi có nhiều phiên bản python3.
Tôi có thể làm gì để giải quyết vấn đề này?
Trả lời
Khi tôi làm điều đó (cụ thể là cố gắng tìm cách cập nhật sqlite3 cho một chương trình python đang chạy; không hoạt động ...), tôi đã biên dịch sqlite và nhận libsqlite3.so.0.8.6, sau đó thay thế sqlite3 toàn hệ thống bằng cái đó. Đối với tôi trên debian, đó là trong / usr / lib / x86_64-linux-gnu. Tôi đã thấy (mặc dù bây giờ tôi không thể tìm thấy ở đâu) rằng cách này có thể gây ra sự cố khi cập nhật trong tương lai. Tuy nhiên, nó đã cập nhật sqlite3 của python cho tôi.
Bạn có thể nhập các phiên bản cụ thể:
__requires__= 'sqlite3==3.6.20'
import pkg_resources
pkg_resources.require("sqlite3==3.6.20")
import sqlite
Lưu ý rằng điều này chỉ hoạt động trong lần nhập đầu tiên. Nếu sqlite được nhập trước pkg_resources, nó sẽ có phiên bản mới nhất.