• 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
    
    不报错即可!
  • 相关阅读:
    使用jquery的 $.grep实现es6的filter效果
    web移动前端页面,jquery判断页面滑动方向
    js for循环与for in循环的区别
    jq判断滚动条向上还是向下
    react中的hoc和修饰器@connect结合使用
    creat-react-app 如何在组件中img的src引入图片路径??
    react将字符串转义成html语句
    POJ 3905 Perfect Election (2-Sat)
    POJ 2296 Map Labeler (2-Sat)
    HDU Bomb Game 3622 (2-Sat)
  • 原文地址:https://www.cnblogs.com/if-then/p/6980265.html
Copyright © 2020-2023  润新知