I'm attempting to write some stand-alone python code that opens a qgis project and print composer template in order to generate pdf figures. I have this running on my Windows 7 machine, but I need to move it onto our Ubuntu Linux server.
The code crashes when trying to load a template into the print composer, printing the following error to the console:
Segmentation fault (core dumped)
This is the code I'm trying to run using the python interpreter:
from qgis. from qgis.gui import * from PyQt4.QtCore import * from PyQt4.QtXml import * from PyQt4.QtGui import * import sys import os app = QgsApplication(sys.argv, False) app.initQgis() os.chdir('/path/to/output') renderer = QgsMapRenderer() project_path = "/path/to/project/project.qgs" template_path = "/path/to/template/template.qpt" project = QgsProject.instance() project.read(QFileInfo(project_path)) root = project.layerTreeRoot() layers =  for child in root.children(): if child.isVisible(): layers.append(child.layerId()) renderer.setLayerSet(layers) template_file = file(template_path) template_content = template_file.read() template_file.close() document = QDomDocument() document.setContent(template_content) c = QgsComposition(renderer) c.loadFromTemplate(document) c.refreshItems() map_item = c.getComposerItemById('map') map_item.setNewScale(14400000000,True) #export to PDF and also save a QGS file c.exportAsPDF('Fig' + str(1) + '.pdf') project.write(QFileInfo('Fig' + str(1) + '.qgs')) #clear project instance project.clear() app.exitQgis() app.exit() sys.exit()
The line that causes the problem is:
The qpt file was created in Windows, I'm not sure if that would be a problem. The qgs file was also created in Windows and it works fine.
EDIT: I figured out that its the ComposerLabel tag in the qpt file that is causing the problem. Also, I'm using QGS 2.18.