簡體   English   中英

無法導入它們:_sqlite3 /Python3.6 / CentOS6

[英]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.hsqlite3ext.h頭文件的目錄。

編譯后, sqlite3 Python模塊將加載_sqlite3*.so擴展模塊(確切的名稱與確切的Python 3版本和平台不同),動態加載程序將找到正確的libsqlite3.so版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM