轉載自:https://www.jianshu.com/p/dd4532457b9f
=======
原文地址
升級完python3以及新安裝django后運行 django項目的時候出現 No module named '_sqlite3' 錯誤:
出現此問題: 我們進入python環境
>>import sys >>sys.path 命令結果如下 :

完成退出 python環境
執行以下命令:
[root@localhost lib-dynload]# find / -name _ sqlite3.so
發現在/usr/local/python3/lib/python3.6/lib-dynload/這個路徑下沒找到_sqlite3.so
但是在/usr/lib64/python2.7/lib-dynload/_sqlite3.so是有這個的; 記住千萬不要把python2.7下的_sqlite3.so復制到python3下;是用不了的;
接下來我們開始安裝sqlite3:
執行以下命令:
[root@localhost lib-dynload]# find / -name _ sqlite3.so
發現在/usr/local/python3/lib/python3.6/lib-dynload/這個路徑下沒找到_sqlite3.so
但是在/usr/lib64/python2.7/lib-dynload/_sqlite3.so是有這個的; 記住千萬不要把python2.7下的_sqlite3.so復制到python3下;是用不了的;
接下來我們開始安裝sqlite3:
- 下載安裝包:wget https://www.sqlite.org/2018/sqlite-autoconf-3240000.tar.gz
- 解壓:tar -xvzf sqlite-autoconf-3240000.tar.gz
- 進入目錄:cd sqlite-autoconf-3240000/
- 編譯:./configure --prefix=/usr/local/sqlite
- 安裝 :make -j4&&sudo make install
安裝成功后如下:

此時我們進行重新安裝python3
進入python3安裝目錄 :
[root@localhost sqlite-autoconf-3240000]# cd ../Python-3.6.5/
修改setup.py
[root@localhost Python-3.6.5]# vi setup.py
查找" sqlite_inc_paths" 新增
'/usr/local/sqlite/include'
'/usr/local/sqlite/include/sqlite3'
完成后如下:
保存退出;
執行命令:
[root@localhost Python-3.6.5]# ./configure --enable-loadable-sqlite-extensions
[root@localhost Python-3.6.5]# make && sudo make install
安裝完執行以下命令查看_sqlite3.so情況
[root@localhost Python-3.6.5]# find / -name _sqlite*.so
發現python3 多了
/root/Python-3.6.5/build/lib.linux-x86_64-3.6/_sqlite3.cpython-36m-x86_64-linux-gnu.so
/usr/local/lib/python3.6/lib-dynload/_sqlite3.cpython-36m-x86_64-linux-gnu.so
接下來我們在執行:
cp /usr/local/lib/python3.6/lib-dynload/_sqlite3.cpython-36m-x86_64-linux-gnu.so /usr/local/python3/lib/python3.6/lib-dynload/_sqlite3.so
再次進入python環境
執行命令import sqlite3已經可以正常了
ok問題解決!
進入python3安裝目錄 :
[root@localhost sqlite-autoconf-3240000]# cd ../Python-3.6.5/
修改setup.py
[root@localhost Python-3.6.5]# vi setup.py
查找" sqlite_inc_paths" 新增
'/usr/local/sqlite/include'
'/usr/local/sqlite/include/sqlite3'
完成后如下:
執行命令:
[root@localhost Python-3.6.5]# ./configure --enable-loadable-sqlite-extensions
[root@localhost Python-3.6.5]# make && sudo make install
安裝完執行以下命令查看_sqlite3.so情況
[root@localhost Python-3.6.5]# find / -name _sqlite*.so
/root/Python-3.6.5/build/lib.linux-x86_64-3.6/_sqlite3.cpython-36m-x86_64-linux-gnu.so
/usr/local/lib/python3.6/lib-dynload/_sqlite3.cpython-36m-x86_64-linux-gnu.so
接下來我們在執行:
cp /usr/local/lib/python3.6/lib-dynload/_sqlite3.cpython-36m-x86_64-linux-gnu.so /usr/local/python3/lib/python3.6/lib-dynload/_sqlite3.so
再次進入python環境
執行命令import sqlite3已經可以正常了
作者:風箏flying
鏈接:https://www.jianshu.com/p/dd4532457b9f
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
