问题描述
squish是一个自动化测试工具
squish安装是默认选择python3.8版本,执行test.py, 尝试使用squish连接数据库,但是一直报错
test.py包含以下内容:
import sqlite3
dbPath = "/home/wondfo/user.db"
#获取DB连接
def main():
conn = sqlite3.connect(dbPath)
cursor = conn.cursor()
test.log("数据库链接成功")
现象:远行报错Detail ModuleNotFoundError: No module named '_sqlite3'
心里路程
最开始以为是squish版本不兼容的问题(以前的同事说过squish这个版本最好使用py2.X 版本,3.X有好多内容不兼容),然后将squish卸载后重新安装选择2.7版本,远行任然会报错
继续排查,使用本地安装的pycharm运行test.py可执行成功,但是squish不行 可以断定是squish自带的python库有问题,将本地的python3.8软连接至squish对应的python3目录下
具体操作
1.squish的安装路径下/home/squish-for-qt-6.7.1/python3/bin,删除原来的python3和python3.8
命令:rm -rf
2.再将本地安装的py3.8软连接至squish自带的python目录下
ln -s /usr/bin/python3.8 /home/squish-for-qt-6.7.1/python3/bin/python3.8
ln -s /usr/bin/python3 /home/squish-for-qt-6.7.1/python3/bin/python3
PS:都要使用绝对路径
3.操作完成后,进入squish的python目录下,使用命令行./python3.8 test.py 可以执行成功
但是打开squish工具再运行test.py 仍会报相同的错误Detail ModuleNotFoundError: No module named '_sqlite3' 根本问题还是没有解决
4.使用命令查看_sqlite3.so 存在的路径情况,命令:find / -name _sqlite*.so
返回查询的结果中 没有squish的python3.8路径下果然没有_sqlite3.so类文件
5.然后将本地python3.8目录下的_sqlite3.cpython-38-x86_64-linux-gnu.so复制到/home/squish-for-qt-6.7.1/python3/bin/python3.8目录 下 重新打开squish运行test.py可运行成功
由于时间长了,能体现过程的图片没有及时保存,只能简单文字描述
总结
在最开始报错运行报错的时候,如果使用具体操作-4的命令去排查可能解决的更快一些,但百度的结果也不是每个都能精准指到问题所在,不过在查找资料的过程中也学到了一些额外的知识.