我在Windows 10中编写了这个项目。我使用Postgres数据库。我使用QSqlTableModel来显示客户端表。
self.model = QtSql.QSqlTableModel()
self.ui.tableView.setModel(self.model)
现在将设备改为macbook m1(macOS Monterey)。问题开始了。安装了Psycopg 2-binary。我连接到数据库。但是QSqlTableModel不工作。启动项目时,PyCharm上出现以下错误:
QSqlDatabase: QPSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC QPSQL
QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins
终端显示如下:
marcus@MacBook-Air-Marcus ~ % postgres -V
postgres (PostgreSQL) 14.2
marcus@MacBook-Air-Marcus ~ % psql -V
psql (PostgreSQL) 14.2
型
我创建的链接。
marcus@MacBook-Air-Marcus ~ % brew link --overwrite postgresql
Linking /opt/homebrew/Cellar/postgresql/14.2_1... 4318 symlinks created.
marcus@MacBook-Air-Marcus bin % export PATH=$PATH:/opt/homebrew/Cellar/libpq/14.2/bin
marcus@MacBook-Air-Marcus bin % export PATH=$PATH:/opt/homebrew/opt/libpq/lib
marcus@MacBook-Air-Marcus bin % echo $PATH
/opt/homebrew/opt/openssl@1.1/bin:/opt/homebrew/opt/libpq/bin:/usr/local/opt/libpq/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin:/opt/homebrew/Cellar/libpq/14.2/bin:/opt/homebrew/opt/libpq/lib
我不知道怎么修。
在路径中,添加了qmake文件(/Users/marcus/Qt/6.3.0/macos/bin)的路径。
marcus@MacBook-Air-Marcus sqldrivers % echo $PATH
/Users/marcus/Qt/6.3.0/macos/bin:/opt/homebrew/opt/openssl@1.1/bin:/opt/homebrew/opt/libpq/bin:/usr/local/opt/libpq/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin:/Users/marcus/Qt/6.3.0/Src/qtbase/src/plugins/sqldrivers
文档(https://doc.qt.io/qt-5/sql-driver.html#qpsql)中指定了以下方法:如何在Unix和macOS上构建QPSQL插件您需要安装PostgreSQL客户端库和头文件。
要让qmake查找PostgreSQL头文件和共享库,请按以下方式运行qmake(假设PostgreSQL客户端安装在/usr中):
cd $QTDIR/qtbase/src/plugins/sqldrivers
qmake -- PSQL_INCDIR=/usr/include/pgsql
make sub-psql
但我做不到抱歉我是新手。
marcus@MacBook-Air-Marcus psql % pwd
/Users/marcus/Qt/6.3.0/Src/qtbase/src/plugins/sqldrivers/psql
marcus@MacBook-Air-Marcus psql % qmake -o Makefile /Users/marcus
Cannot read /Users/marcus: file to open is a directory
目录中有以下文件
marcus@MacBook-Air-Marcus psql % ls
CMakeLists.txt main.cpp qsql_psql.cpp
README psql.json qsql_psql_p.h
1条答案
按热度按时间rkttyhzu1#
QPSQL只是libpq库的一个 Package 器。您必须在您的机器上安装Postgres应用程序,或者使用brew,或者下载并安装Postgres.app。然后让您的应用程序知道库在哪里:例如,如果您使用brew set环境变量
如果是Postgres.app,请在Postgres.app的内容中查找lib路径