python加載sqlite3報錯:No module named _sqlite3


環境為Ubuntu16.04 Apache2.4 Python2.7.13 django 1.8

今天部署apache+django,經過各種折騰,好不容易配置完了,發現錯誤Apache的日志里有一項

ImproperlyConfigured: Error loading either pysqlite2 or sqlite3 modules (tried in that order): No module named _sqlite3

於是打開Python 測試下能否導入sqlite3模塊

>>> import sqlite3
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/sqlite3/__init__.py", line 24, in <module>
    from dbapi2 import *
  File "/usr/local/lib/python2.7/sqlite3/dbapi2.py", line 28, in <module>
    from _sqlite3 import *
ImportError: No module named _sqlite3

結果是沒有,我原來使用的是windows,sqlite3已經在安裝包里了,但是源碼安裝的沒有,是要依賴系統的庫

我安裝了如下兩個:

sudo apt-get install libsqlite3-dev 

sudo apt-get install sqlite3

PS(我是一直在試,找應該安裝哪個,有一個就安一個,但是安完覺得可能有多余的,所以如果你也在安裝的話,可以先安裝第一個,然后再重新Python2.7,看make時是否提示_sqlite3 需要單獨安裝,如下的話還是不行,那么再裝第二個)

Python build finished, but the necessary bits to build these modules were not found:
_bsddb             _sqlite3           _tkinter        
bsddb185           bz2                dbm             
dl                 gdbm               imageop         
readline           sunaudiodev                        
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

上面為編譯完提示不能一起安裝,需要單獨安裝的提示:

提示:網上的博客很多,但是各自的情況不一樣,都需要自己試試

對與sqlite3這個模塊的做法有兩類:

1下載sqlite3模塊sqlite-autoconf-3190300.tar.gz源碼,

  手工配置,編譯,安裝,再配置python安裝下的setup.py   我沒行得通,還是提示無法安裝_sqlite3這個提示!

2還有一種是 find / -name "_sqlite3*so" ;然后將此文件 cp到 安裝目錄下的 lib-dynload(一個動態庫文件夾),但是我find的結果是

  _sqlite3.x86_64-linux-gnu.so 而且將其改名拷貝過去還是不能用

3 安裝依賴包,系統不同,包名不同(靠譜)

centos下 是 yum install sqlite3-devel -y  #搜索到這個的情況比較多,我也是基於此說法,才判斷是裝一個dev包就應該可以

ubuntu 下是 sudo apt-get install libsqlite3-dev 


然后重新make重新安裝python吧

如下提示中沒有了_sqlite3,那么就沒問題了,而且可以看下bulid目錄下存在了_sqlite3.so!

Python build finished, but the necessary bits to build these modules were not found:
_bsddb             _ssl               _tkinter        
bsddb185           bz2                dbm             
dl                 gdbm               imageop         
readline           sunaudiodev        zlib            
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

進一步驗證,安裝完成后

1. 方法一:先看下lib是否已經生成_sqlite3.so文件

還是在 /home/user/usr/python/python2.7/lib/python2.7/lib-dynload 下

發現了 _sqlite3.so 文件

2. 方法二:使用python 命令

>>> import sqlite3 
不報錯即可!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM