Python多版本环境下sqlite模块导入失败及版本差异问题求助
一、Python 3.11导入sqlite报错的解决方法
模块名称纠正
Python标准库中用于操作SQLite的模块是sqlite3,而非sqlite。你在Python3.10中能成功导入sqlite,是因为之前给Python3.10单独安装了第三方的sqlite包(比如通过pip3.10 install sqlite),但Python3.11环境里没有安装这个包。
建议直接使用标准库的sqlite3,执行以下代码即可正常导入:import sqlite3若
sqlite3也无法导入
如果Python3.11连sqlite3都提示找不到,说明Python3.11在编译时没有链接系统的SQLite开发库,解决步骤:- 安装SQLite开发依赖(Debian/Ubuntu系统):
sudo apt-get update && sudo apt-get install libsqlite3-dev - 重新编译安装Python3.11,确保编译过程中能检测到SQLite库。
- 安装SQLite开发依赖(Debian/Ubuntu系统):
二、python3 --version显示3.12.1的原因分析
你通过find /usr/bin/python*仅查到了/usr/bin目录下的Python版本,但python3命令的实际指向可能不在这个目录中:
查看
python3的实际路径
执行以下命令可以定位python3对应的真实可执行文件位置:which python3输出可能是类似
/home/mat/.pyenv/shims/python3(通过pyenv版本管理工具安装)、/usr/local/bin/python3(手动编译安装在/usr/local)或者/home/mat/miniconda3/bin/python3(通过conda安装)。PATH优先级导致版本差异
系统执行命令时会按照PATH环境变量里的路径顺序查找可执行文件,如果你的PATH中某个目录(比如用户自定义的安装目录)的优先级高于/usr/bin,且该目录下存在Python3.12的可执行文件,那么调用python3时就会优先执行3.12版本,而非/usr/bin里的Python3.10或3.11。
内容的提问来源于stack exchange,提问作者Mateusz

