PyQt“QSqlDatabase:QPSQL驱动程序未加载”在Windows上,在OSX上工作

2024-09-25 08:34:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从PyQt/PySide连接到PostgreSQL 13数据库

当我到达con = QSqlDatabase.addDatabase('QPSQL')时,我得到以下控制台输出:

QSqlDatabase: QPSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC QPSQL

据我所知,第二行显示找到了QPSQL驱动程序,但由于某些原因,它没有加载

我在互联网上搜索过,并尝试在各地复制DLL,以及向我的系统添加不同的目录PATH,但还没有找到解决方案

我试过PyQt5、PyQt6、PySide2和PySide6,都是在新的VenV中,都有相同的问题。如果我简单地将驱动程序字符串更改为"QSQLITE",驱动程序将成功加载(不过,很明显,脚本随后会出错,因为我没有使用SQLite)

我在两台Win10机器和一台Win7机器上试过这个,都有相同的问题,不过当我在Mac上试过时,它第一次就成功了,不需要摆弄

我一辈子都搞不清楚发生了什么事!任何帮助都将不胜感激

编辑:额外信息

我以为我已经通过以管理员身份运行(Win7)解决了这个问题,但后来我在Win10上遇到了同样的问题。我最终让Win10运行起来,我认为在我为脚本在7机器上设置的venv中运行(尽管我以前已经尝试过,并且尝试了一些其他的东西,它似乎只是突然“变好”,而不是任何一个更改的结果-尽管停用venv肯定会破坏一些东西)

所以,现在我的脚本在一台Win7和Win10机器上工作,来自同一个venv-yay!我继续尝试另一台Win7机器,错误又回来了。我在那台机器上用的是同一台venv

更让人困惑的是,我想如果我尝试在“好”Win7机器上对脚本进行pyinstaller,然后在“坏”机器上运行它,我会看到发生了什么。直到我将“平台”和“sqldrivers”从PyQt插件文件夹复制到.exe文件夹中,我才能让我的.exe在“好”计算机上运行。对我来说,这表明.exe正在自己的目录中查找库,因此现在应该可以在任何地方工作-不幸的是,当我切换到“坏”机器时,我遇到了相同的旧错误。通过从.exe路径中删除“sqldrivers”文件夹,我可以在“good”计算机上强制执行此错误,因此至少在该计算机上它看起来确实在那里

在每个可能的位置都有“missing.dll”的副本,可供操作系统和脚本使用,我只是不明白为什么有时找不到它


Tags: 目录脚本文件夹机器venv计算机错误驱动程序