【问题标题】:GtkWarning: could not open displayGtkWarning:无法打开显示
【发布时间】:2015-02-23 03:13:46
【问题描述】:

我正在尝试在 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

如何在无头设置中运行它?

【问题讨论】:

  • 你用我的回答below解决了这个问题吗?
  • @Lawrence 谢谢它非常有帮助。然而,我发现的最简单的方法是使用 ssh -X

标签: python ubuntu gtk scrapy vps


【解决方案1】:

首先,您没有说明您的服务器上是否安装了桌面环境(或 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 仅为当前终端会话设置,因此在为这一步实现自动化时请记住这一点。

【讨论】:

    【解决方案2】:

    您可能通过 ssh 运行应用程序?然后,您需要在本地 PC 上运行 X 服务器。如果没有,您应该正确设置 DISPLAY 环境变量。最近,Ubuntu 上的 sudo 命令没有传递一些环境变量。如果您通过 sudo 运行应用程序,请确保已设置 $DISPLAY。

    附加

    这是 pygtk 的错误。你的应用应该依赖于 gtk 小部件。

    https://bugs.launchpad.net/ubuntu/+source/software-center/+bug/800574

    【讨论】:

    • 我通过 ssh 连接到这个 vps 并在终端上运行它。尽管在本地运行此程序不会打开任何窗口或任何东西。您能否再解释一下,如何运行 Xserver?
    猜你喜欢
    • 2013-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    • 2014-11-10
    • 1970-01-01
    相关资源
    最近更新 更多