python加载sqlite3报错:No module named _sqlite3

环境为Ubuntu16.04 Apache2.4 Python2.7.13 django 1.8python

今天部署apache+django,通过各类折腾,好不容易配置完了,发现错误Apache的日志里有一项linux

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

因而打开Python 测试下可否导入sqlite3模块apache

>>> 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

django

结果是没有,我原来使用的是windows,sqlite3已经在安装包里了,可是源码安装的没有,是要依赖系统的库ubuntu

我安装了以下两个:windows

sudo apt-get install libsqlite3-dev  centos

sudo apt-get install sqlite3api

PS(我是一直在试,找应该安装哪一个,有一个就安一个,可是安完以为可能有多余的,因此若是你也在安装的话,能够先安装第一个,而后再从新Python2.7,看make时是否提示_sqlite3 须要单独安装,以下的话仍是不行,那么再装第二个)markdown

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 
不报错便可!