Também recebo um dicionário vazio quando executo seu código, mas o seguinte funciona para mim, que é um pouco diferente:
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()
Testado no QGIS 2.18.3 para Windows 7 de 64 bits.
Editar:
A principal diferença, acredito, entre seu código e o que eu usei é que você precisa criar o objeto QApplication antes de criar o QgsApplication. Então você precisaria substituir:
qgs = QgsApplication([], False)
com isso:
qgs = QApplication([], False)
Mas a classe QApplication precisa ser importada, portanto, devemos adicionar o seguinte:
from PyQt4.QtGui import QApplication
E, finalmente, se você quiser fazer uma limpeza, adicione o seguinte no final.
QgsApplication.exitQgis()
Portanto, você pode tentar usar o código a seguir, mais próximo do código original:
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
etapas experimentadas do OP e @ GermánCarrillo. Qual é a versão do OP?