使用pyenv+poetry创建的Python3.9.2虚拟环境报No module named _sqlite3错如何解决
问题解决方案
结论先行
不需要删除.venv文件夹重建虚拟环境,该报错和虚拟环境本身无关,根源是你通过pyenv安装的Python 3.9.2在编译阶段未检测到系统层面的sqlite开发依赖,导致最终生成的Python解释器缺失内置的_sqlite3模块,属于解释器层面的问题,和poetry、虚拟环境、第三方依赖安装都没有关系。
具体解决步骤
- 先安装对应系统的sqlite开发依赖包
- Debian/Ubuntu 系操作系统:
sudo apt install libsqlite3-dev - RHEL/CentOS/Fedora 系操作系统:
sudo dnf install sqlite-devel - MacOS(Homebrew环境):
brew install sqlite3
- Debian/Ubuntu 系操作系统:
- 重新编译安装pyenv下的Python 3.9.2版本,覆盖之前缺失依赖编译的版本:
pyenv uninstall 3.9.2 pyenv install 3.9.2 - 验证解释器层面的问题是否修复:
执行以下命令,无报错即代表修复成功:python -c "import sqlite3" - 回到项目目录重新激活虚拟环境即可正常使用,原有虚拟环境内安装的依赖不会丢失,无需重新执行
poetry install:poetry shell
补充说明
你之前执行poetry add pysqlite3无法解决问题的原因是:pysqlite3是第三方提供的sqlite绑定包,和Python标准库内置的_sqlite3模块不属于同一依赖,大部分调用sqlite的Python库默认只会调用标准库内置版本,不会主动适配第三方的pysqlite3,因此无法解决报错。
内容的提问来源于stack exchange,提问作者a-s-r-789
相关产品推荐
相关产品推荐

