Ich kaufte this book called Building Mapping Applications with QGIS und ich versuche, eine der Übungen durchzuarbeiten. Es gibt ein Skript, das ich ausführen möchte, das Python abstürzt und die Fehlermeldung "python.exe funktioniert nicht mehr" erzeugt.Python-Skript mit QGis - Python.exe gestoppt
import sys
import os
from qgis.core import *
from qgis.gui import *
from PyQt4.QtGui import *
from PyQt4.QtCore import Qt
#############################################################################
class MapViewer(QMainWindow):
def __init__(self, shapefile):
QMainWindow.__init__(self)
self.setWindowTitle("Map Viewer")
canvas = QgsMapCanvas()
canvas.useImageToRender(False)
canvas.setCanvasColor(Qt.white)
canvas.show()
layer = QgsVectorLayer(shapefile, "layer1", "ogr")
if not layer.isValid():
raise IOError("Invalid shapefile")
QgsMapLayerRegistry.instance().addMapLayer(layer)
canvas.setExtent(layer.extent())
canvas.setLayerSet([QgsMapCanvasLayer(layer)])
layout = QVBoxLayout()
layout.addWidget(canvas)
contents = QWidget()
contents.setLayout(layout)
self.setCentralWidget(contents)
#############################################################################
def main():
""" Our main program.
"""
QgsApplication.setPrefixPath(os.environ['QGIS_PREFIX'], True)
QgsApplication.initQgis()
app = QApplication(sys.argv)
viewer = MapViewer("C:/folder/shapefile.shp")
viewer.show()
app.exec_()
QgsApplication.exitQgis()
#############################################################################
if __name__ == "__main__":
main()
Ich weiß nicht, eine ganze Menge über Python mit QGIS so bin ich nicht sicher, was Python zum Absturz verursacht. Ich bin sicher, dass alle Module korrekt importiert werden, da es keine Fehlermeldungen gibt, wenn ich meine Pfade definiere und dann die Module mit der OSGeo4W Shell in das Skript importiere. Diese
ist, wie meine Pfade definiert:
SET OSGEO4W_ROOT=C:\OSGeo4W64
SET QGIS_PREFIX=%OSGEO4W_ROOT%\apps\qgis
SET PATH=%PATH%;%QGIS_PREFIX%\bin
SET PYTHONPATH=%QGIS_PREFIX%\python;%PYTHONPATH%
dies alles gegeben, ich glaube, es ist etwas falsch in dem Skript sein muss. Jedoch, wenn ich das Skript unter Verwendung http://pep8online.com/ überprüfe, gibt es keine Fehler, die ich beheben kann, die dazu führen, dass Python nicht abstürzt.
Beachten Sie, dass ich versucht habe, habe ich SET PATH=%QGIS_PREFIX%\bin;%PATH%
anstelle von ohne Erfolg versucht.
Nur als ein FYI habe ich dieses Skript nicht geschrieben, es ist eine direkte Kopie aus dem Buch, das funktionieren sollte, ohne irgendwelche Änderungen vorzunehmen. Es sieht so aus, als müssten mehrere Änderungen am Skript vorgenommen werden, um diese Probleme zu beheben. Ich habe einen Stich gemacht, aber ich komme nicht weiter. Wenn Sie andere Ideen für die Beratung haben, würde ich mich sehr freuen. Oder wenn Sie dafür bereit sind, würde ich gerne Ihre modifizierte Version des Skripts ausprobieren! – ge0m3try