[英]they could not be imported: _sqlite3 /Python3.6 / CentOS6
環境
# cat /etc/redhat-release
CentOS版本6.8(最終版)
$ which python3.6
/usr/local/bin/python3.6
# find /usr/local -name _sqlite3.so
/usr/local/lib/python2.7/lib-dynload/_sqlite3.so
# yum install sqlite-devel
當我使用usr SQLite3時,發生錯誤
沒有名為“ _sqlite3”的模塊
我決定再次從源代碼構建它。
# ./configure --enable-shared --prefix=/usr/local LDFLAGS="-Wl,-rpath /usr/local/lib" --with-sqlite=/usr/local/lib/python2.7/lib-dynload/_sqlite3.so
# make
Python構建成功完成!
以下模塊已成功構建,但由於無法導入而被刪除:_sqlite3
·為什么?
/usr/local/lib/python2.7/lib-dynload/_sqlite3.so
是Python 2 Python包裝器模塊,而不是實際的SQLite庫。 此外,-- --with-sqlite
應該指向標頭 ,而不是共享庫。 編譯需要頭文件,動態庫位於運行時。
安裝sqlite-devel
標頭后,您不必使用--with-sqlite
; 將它們放在usr/include
中的Python配置腳本知道如何查找的默認位置。 僅sqlite3ext.h
文件位於非默認位置時,才可以使用該選項指向包含sqlite3.h
和sqlite3ext.h
頭文件的目錄。
編譯后, sqlite3
Python模塊將加載_sqlite3*.so
擴展模塊(確切的名稱與確切的Python 3版本和平台不同),動態加載程序將找到正確的libsqlite3.so
版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.