• 【Error】Python3.7 No module named ‘_sqlite3‘ 解决方案


    场景:docker容器运行keybert时出现错误 No module named ‘_sqlite3‘,是容器环境没有sqlite的库,如下图所示:

    本机是能够正常导入sqlite3的,虚拟环境conda下也有该库。
    python3.8版本的不可用于python3.7中,因此需要重新安装一个python3.7的

    在这里插入图片描述

    第一次尝试(没解决)

    1. 安装 sqlite-devel
    apt-get install sqlite-devel
    
    • 1

    报错:Unable to locate package sqlite-devel

    第二次尝试(没解决)

    1. 安装sqlite3的包
    $ wget https://www.sqlite.org/2017/sqlite-autoconf-3170000.tar.gz –no-check-certificate
    
    $ tar zxvf sqlite-autoconf-3170000.tar.gz
    
    $ cd sqlite-autoconf-3170000
    
    $ ./configure –prefix=/usr/local/sqlite
    
    $  make && sudo make install 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    1. 对python3进行重新编译
      就是重新安装python环境,希望能够生成sqlite.so
    $ cd Python-3.7.0
    
    $ LD_RUN_PATH=/usr/local/sqlite/lib ./configure LDFLAGS="-L/usr/local/sqlite/lib" CPPFLAGS="-I /usr/local/sqlite/include"
    
     $ LD_RUN_PATH=/usr/local/sqlite/lib make
    
     $ LD_RUN_PATH=/usr/local/sqlite/lib sudo make install
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    第三次尝试(已解决)

    如果有conda的朋友,可以很快解决该问题。

      1. 查找本机下_sqlite*.so的相关文件(不是容器内部的)
    find / -name _sqlite*.so
    
    • 1

    在这里插入图片描述
    可以看得到有python的版本信息,docker容器的环境是python3.7.15,挑了python3.7.11的虚拟环境的文件(_sqlite3.cpython-37m-x86_64-linux-gnu.so)

    自己新建虚拟环境的时候,选择和容器环境相同的python版本即可

      1. 复制选定文件到容器
    docker cp /data_server/conda_pkgs/python-3.7.11-h12debd9_0/lib/python3.7/lib-dynload/_sqlite3.cpython-37m-x86_64-linux-gnu.so d518b6e47e92:/usr/src/python37/lib/python3.7/lib-dynload
    
    • 1

    解释一下相关命令:
    docker cp xxx id:xxx 代表复制本机文件到容器中,id代表容器id,xxx是容器文件夹的绝对路径
    /usr/src/python37/lib/python3.7/lib-dynload

      1. 结果:查找容器内的_sqlite*.so文件存在,导入sqlite3成功
        在这里插入图片描述
        在这里插入图片描述

    参考资料:

  • 相关阅读:
    第二十二篇:稳定性之服务等级协议
    158_模型_Power BI 使用 DAX + SVG 打通制作商业图表几乎所有可能
    差分数组(定义+性质+证明+代码实现+巩固练习)
    Java面向对象(二)
    Jenkins 配置邮件通知(腾讯企业邮箱)
    电磁场知识回顾——基本概念
    云原生时代崛起的编程语言Go基础实战
    VUE:组件
    SAP-PP:基础概念笔记-5(物料主数据的MRP1~4视图)
    LCD12864驱动开发
  • 原文地址:https://blog.csdn.net/qq_43800119/article/details/130826293