Ich erhalte auch ein leeres Wörterbuch, wenn ich Ihren Code ausführe, aber das Folgende funktioniert für mich, was etwas anders ist:
from qgis.core import *
from PyQt4.QtCore import QFileInfo
from PyQt4.QtGui import QApplication
import os
from os.path import expanduser
home = expanduser("~")
QgsApplication( [], False, home + "/AppData/Local/Temp" )
QgsApplication.setPrefixPath("C:/OSGeo4W64/apps/qgis", True)
app = QApplication([], True)
QgsApplication.initQgis()
# Get the project instance
project = QgsProject.instance()
# Open the project
project.read(QFileInfo('C:\path\to\project\project.qgs'))
print project.fileName()
# Get the layers in the project
layers = QgsMapLayerRegistry.instance().mapLayers()
print layers
QgsApplication.exitQgis()
app.exit()
Getestet unter QGIS 2.18.3 für Windows 7 64-Bit.
Bearbeiten:
Ich glaube, der Hauptunterschied zwischen Ihrem Code und dem, was ich verwendet habe, besteht darin, dass Sie das QApplication-Objekt erstellen müssen, bevor Sie die QgsApplication erstellen. Sie müssten also Folgendes ersetzen:
qgs = QgsApplication([], False)
mit diesem:
qgs = QApplication([], False)
Die QApplication-Klasse muss jedoch importiert werden, sodass Folgendes hinzugefügt werden muss:
from PyQt4.QtGui import QApplication
Wenn Sie eine Bereinigung durchführen möchten, müssen Sie am Ende Folgendes hinzufügen.
QgsApplication.exitQgis()
Sie können also versuchen, den folgenden Code zu verwenden, der Ihrem ursprünglichen Code näher kommt:
from qgis.core import *
from PyQt4.QtCore import QFileInfo
from PyQt4.QtGui import QApplication
QgsApplication.setPrefixPath("C:/OSGeo4W64/apps/qgis", True)
qgs = QApplication([], False)
QgsApplication.initQgis()
# Get the project instance
project = QgsProject.instance()
# Open the project
project.read(QFileInfo('C:/path/to/project/project.qgs'))
print project.fileName()
# Get the layers in the project
layers = QgsMapLayerRegistry.instance().mapLayers()
print layers
QgsApplication.exitQgis()
QGIS 2.18.2
erprobten Schritten von OP und @ GermánCarrillo. Was ist die OP-Version?