无法在 Python 3.9.2 中导入模块 qgis

问题描述

我正在研究 Python 3.9.2 并得到了这个

错误:没有名为 qgis 的模块

我正在尝试连接到数据库并在其中进行查询。 我已经看到下面的代码在 python 2 下工作。与 Python 3 有什么区别吗?

[...]
from qgis.core import *
import qgis.utils


uri.setConnection('{0}'.format(hote_IP),"5432",'{0}'.format(xxx),'{0}'.format(xxx))    
db = QsqlDatabase.addDatabase("QPsql")    
db.setHostName(uri.host())    
db.setDatabaseName(uri.database())    
db.setPort(int(uri.port()))    
db.setUserName(uri.username())    
db.setPassword(uri.password())

sql = '''select field1,field2 from schema.table'''    
query = db.exec_(sql)
print(str(query.value(0))

解决方法

尝试通过 python 3 重新安装:

python3 -m pip install qgis
,

我在为 python 项目创建虚拟环境然后尝试导入 QGIS 时遇到了同样的问题。在虚拟环境中安装 QGIS 是相当复杂的。我为解决这个问题所做的是创建可以访问 QGIS 安装后所在的系统级站点包的 venv。我使用以下内容:

string

然而,此操作的先决条件是您已正确安装 QGIS 并且可以从您的系统级 python 解释器访问它。我使用 Ubuntu,在 Ubuntu 上正确安装 QGIS 的说明是 here