EC2服务器上的“无法连接到显示器”

时间:2019-05-22 20:28:04

标签: python pandas wkhtmltopdf

我正在尝试将一些熊猫数据框表导出为图像。我查看了许多解决方案,并发现了最好的选择。我按照this site上的指示进行操作,在本地一切正常。

但是,当试图使此python脚本在EC2服务器上运行时,出现以下错误:

OSError: wkhtmltoimage exited with non-zero code 1. error:
qt.qpa.screen: QXcbConnection: Could not connect to display 
Could not connect to any X display.


You need to install xvfb(sudo apt-get install xvfb, yum install xorg-x11-server-Xvfb, etc), then add option: {"xvfb": ""}.

我尝试按照指示安装到xfvb,但这不起作用(我想是因为从另一个库中调用了wkhtmltopdf)。我启动了一个新服务器,从头开始重新安装一切,以消除该潜在问题。还是一无所有。

我用Google搜索了这个问题,并尝试了一些随机建议,但没有骰子。

我的目标是从pandas数据框生成SVG文件(转换为html)。是否可以形成没有监视器的云服务器?有没有更好的方法来为大熊猫的PDF报告生成表格图像?

某些代码:

import pandas
data = pandas.read_csv(open("biostats.csv", "r"))

css = """
<style type=\"text/css\">
table {
color: #333;
font-family: Helvetica, Arial, sans-serif;
width: 640px;
border-collapse:
collapse; 
border-spacing: 0;
}"""

text_file = open("filename.html", "a")
# write the CSS
text_file.write(css)
# write the HTML-ized Pandas DataFrame
text_file.write(data.to_html())

imgkitoptions = {"format": "svg"}
imgkit.from_file("filename.html", outputfile, options=imgkitoptions)
text_file.close()

2 个答案:

答案 0 :(得分:0)

尝试在远程主机上进行echo $DISPLAY。如果结果为空,则表示您未连接任何显示屏,因此不会显示输出。

如果是这种情况,请尝试执行export DISPLAY=localhost:10.0,然后重新运行原始命令

注意:连接到远程服务器时,请使用ssh -X

答案 1 :(得分:0)

一种解决方案是运行此程序:

from pyvirtualdisplay import Display
display = Display(visible=0, size(600,600))
display.start()
imgkit.from_file("filename.html", outputfile, options=imgkitoptions)