我正在尝试在vps上运行蜘蛛(使用使用python-gtk2的scrapyjs)。在运行蜘蛛时我收到错误
/root/myporj/venv/local/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:57: GtkWarning: could not open display
如何在无头设置中运行它?
答案 0 :(得分:2)
首先,您没有指定您的服务器上是否安装了桌面环境(或X)?
无论如何,您可以使用xvfb
为您的蜘蛛实现无头设置:
Xvfb 或X虚拟帧缓冲区是实现X11的显示服务器 显示服务器协议。与其他显示服务器Xvfb相比 在内存中执行所有图形操作而不显示任何屏幕 输出。从客户的角度来看,它的行为与任何客户完全一样 其他X显示服务器,提供请求并发送事件和错误 作为适当的。但是,没有显示输出。这个虚拟服务器 不要求它运行的计算机甚至有屏幕或任何 输入设备。
首先,在您的服务器上安装xvfb
。假设您正在使用apt-get
:
sudo apt-get install xvfb
现在,以自定义显示号码运行xvfb服务,例如:
sudo Xvfb :5
之后,您可以通过导出显示编号并运行应用程序来运行虚拟帧缓冲区中需要X
的任何应用程序:
export DISPLAY=:5
run_my_application
DISPLAY
仅针对当前终端会话设置,因此在实施此步骤的自动化时请记住这一点。
答案 1 :(得分:1)
可能你通过ssh运行应用程序?然后,您需要在本地PC上运行X服务器。如果没有,您应该正确设置DISPLAY环境变量。最近,Ubuntu上的sudo命令没有一些传输环境变量。如果您通过sudo运行应用程序,请确保设置了$ DISPLAY。
其他强>
这是pygtk的一个错误。你的app应该依赖于gtk小部件。
https://bugs.launchpad.net/ubuntu/+source/software-center/+bug/800574