Python &引用;无法连接到显示器";在EC2服务器上

Python &引用;无法连接到显示器";在EC2服务器上,python,pandas,wkhtmltopdf,Python,Pandas,Wkhtmltopdf,我正在尝试将一些数据帧表导出为图像。我研究了许多解决方案,发现了似乎是最好的选择。我按照指示继续前行,当地一切都很顺利 但是,当尝试让此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

我正在尝试将一些数据帧表导出为图像。我研究了许多解决方案,发现了似乎是最好的选择。我按照指示继续前行,当地一切都很顺利

但是,当尝试让此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是从另一个库调用的)。我启动了一个新服务器,从头开始重新安装所有东西,以消除潜在的问题。还是没什么

我在谷歌上搜索了这个问题,尝试了一些随机的建议,但没有成功

我的目标是从pandas数据帧(转换为html)生成SVG文件。这是否可以在没有监视器的情况下形成云服务器?有没有更好的方法为熊猫的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()
导入熊猫
数据=pandas.read_csv(打开(“biostats.csv”,“r”))
css=”“”
桌子{
颜色:#333;
字体系列:Helvetica、Arial、无衬线字体;
宽度:640px;
边界塌陷:
崩溃
边界间距:0;
}"""
text_file=open(“filename.html”,“a”)
#编写CSS
text_file.write(css)
#编写HTML数据框
text_file.write(data.to_html())
imgkitoptions={“格式”:“svg”}
imgkit.from_文件(“filename.html”,outputfile,options=imgkitoptions)
text_file.close()

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

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


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

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

我想到两个建议:1。在EC2实例上以Excel或CSV格式保存数据帧,然后通过SCP(使用命令行SCP或GUI客户端,如WinSCP、FileZilla或CuberDuck)将其复制到本地计算机。2.通过SSH隧道(可能有帮助:)从本地计算机连接到EC2实例上运行的Jupyter服务器,谢谢您的建议。我目前正在按照这些思路做一些事情(手动传输文件),但我正试图通过crontab或类似的方式让图像自动生成。我想我应该在问题中注意到这一点!哇,当手动运行它时,它工作了。我现在的问题是,如何让它在crontab中工作?如果在crontab中运行,错误仍然存在。这可能吗?我对crontab不是很有经验,但我添加了另一个解决方案,我觉得可能会有所帮助。你可以试试看!:)另外,如果这个解决方案在问题的上下文中对您有效,请投票并/或接受这个答案:)我认为这就成功了。非常感谢你的帮助,我真的很感激。