无头python脚本需要运行x-server

无头python脚本需要运行x-server,python,python-2.7,image-processing,raster,qgis,Python,Python 2.7,Image Processing,Raster,Qgis,我用Python编写了一个无头脚本,用于预处理哨兵图像并输出NDVI。 该脚本在远程服务器linux容器上运行,我通过SSH连接访问该容器。当我使用以下命令从终端启动脚本时,脚本运行没有错误: python /home/foo/SentinelPPN.py 但是,当通过chronejob自动启动时,它会失败。输出为:无法连接到X服务器。我没有收到其他消息,也没有指示在脚本的哪一行发生错误 我无法确定哪个操作需要X服务器,因为我根本不使用GUI,在脚本期间也没有创建任何可视输出。 为了以head

我用Python编写了一个无头脚本,用于预处理哨兵图像并输出NDVI。 该脚本在远程服务器linux容器上运行,我通过SSH连接访问该容器。当我使用以下命令从终端启动脚本时,脚本运行没有错误:

python /home/foo/SentinelPPN.py
但是,当通过chronejob自动启动时,它会失败。输出为:无法连接到X服务器。我没有收到其他消息,也没有指示在脚本的哪一行发生错误

我无法确定哪个操作需要X服务器,因为我根本不使用GUI,在脚本期间也没有创建任何可视输出。 为了以headless启动脚本,我使用以下设置:

import sys
import os
import qgis
from qgis.core import *
#from PyQt4.QtGui import *

app = QgsApplication([],True, None)
app.setPrefixPath("/usr", True)
app.initQgis()
sys.path.append('/usr/share/qgis/python/plugins')
from processing.core.Processing import Processing
Processing.initialize()
脚本的其余部分主要处理使用以下方式启动的模块:

processing.runalg("...")

您能帮助我理解为什么需要X服务器以及如何避免这种情况吗?

问题在于cronjob“阻塞”了显示变量,从而阻止了qgis/PyQt4的正确初始化。解决方案是告诉cronjob导出显示变量:

* * * * * export DISPLAY=:0 && python /home/foo/SentinelPPN.py
这将显示设置为正确的显示:0


这是从中提取的,因为我们不能将一个无所谓的问题的重复标记为错误在哪一行?我想你应该使用的术语“standalone”是“headless”。错误声明没有指出是哪一行导致了崩溃,即使我手动启动了@MegaIng解决方案,但对我不起作用。该脚本仍需要连接到x服务器。还有什么建议吗?