【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

报错: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. 对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

第三次尝试(已解决)

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

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

在这里插入图片描述
可以看得到有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

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

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

参考资料:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zoetu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值