import os, sys print("---- ENV CHECK ----") print("QGIS_PREFIX_PATH:", os.environ.get("QGIS_PREFIX_PATH")) print("PROJ_LIB:", os.environ.get("PROJ_LIB")) print("GDAL_DATA:", os.environ.get("GDAL_DATA")) print("QT_PLUGIN_PATH:", os.environ.get("QT_PLUGIN_PATH")) import glob print("\n--- SEARCH proj.db in QGIS PREFIX ---") print(glob.glob("/Applications/QGIS-LTR.app/**/proj.db", recursive=True)) print("\n--- CHECK FILE EXISTS ---") print("proj.db exists? ", os.path.isfile(os.path.join(os.environ["PROJ_LIB"], "proj.db"))) QGIS_APP = "/Applications/QGIS-LTR.app/Contents" QGIS_PREFIX = f"{QGIS_APP}/Resources" os.environ["QGIS_PREFIX_PATH"] = QGIS_PREFIX sys.path.append(f"{QGIS_PREFIX}/python") sys.path.append(f"{QGIS_PREFIX}/python/plugins") from qgis.core import QgsApplication, QgsVectorLayer qgs = QgsApplication([], False) qgs.initQgis() uri = ( "dbname='gisdb' host=localhost port=5432 user='postgres' password='postgres' " "table=\"public\".\"dataset_metadata\" key='id' srid=4326" ) layer = QgsVectorLayer(uri, "test", "postgres") print("Valid:", layer.isValid()) print("Provider:", layer.providerType()) print("Error summary:", layer.error().summary()) qgs.exitQgis()