首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >manage.py:无法连接到X服务器

manage.py:无法连接到X服务器
EN

Stack Overflow用户
提问于 2011-12-21 19:57:12
回答 3查看 7.8K关注 0票数 4

我使用PyQt4.QtWebkit爬行了django application.In中的网页,模块无法爬行的生产环境it.it抛出了错误"manage.py:无法连接到X服务器“

我的Qt课程:

代码语言:javascript
复制
class Render(QWebPage):
 def __init__(self, url):
    self.app = QApplication(sys.argv)
    QWebPage.__init__(self)
    self.loadFinished.connect(self._loadFinished)
    self.mainFrame().load(QUrl(url))
    self.app.exec_()

 def _loadFinished(self, result):
    self.frame = self.mainFrame()
    self.app.quit() 

从django-shell呼叫:

代码语言:javascript
复制
 r = Render(url)

当我通过Django-shell(python manage.py shell)调用这个“呈现”类时,呈现函数会抛出错误。你能帮我一下吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-22 15:44:49

原因是"Xvfb“

同样,我需要在bash中使用xvfb(X虚拟帧缓冲区)运行python程序,

代码语言:javascript
复制
ubuntu@localhost$ xvfb-run python webpage_scrapper.py http://www.google.ca/search?q=navaspot

它给出了结果。

现在我的要求是,我需要在python中执行这个shell命令,并等待tine收集结果,我必须处理结果。

请您建议我如何有效地在python上执行这个命令。

票数 9
EN

Stack Overflow用户

发布于 2011-12-21 23:05:12

似乎X显示的环境变量没有被设置,这就是您得到这样的错误的原因。这可能是因为您从环境中运行脚本,而不是绑定到X显示(ssh到server)。

尝试添加显示变量:

代码语言:javascript
复制
DISPLAY=:0.0 python manage.py script

还可以从python中设置显示环境变量。您可以在调用PyQt4之前设置它:

代码语言:javascript
复制
import os
os.putenv('DISPLAY', ':0.0')

如果生产环境没有运行X服务器,也不可能运行PyQt4.QtWebkit。

票数 1
EN

Stack Overflow用户

发布于 2015-12-26 20:22:38

通常在无头机器上,DISPLAY变量不存在或配置错误。要在这样的机器上工作,可以使用以下方法。作为Ubuntu 14.04-LTS机器的一个例子:

首先安装X服务器:sudo apt-get install xserver-xorg

现在启动X服务器(比如:0):sudo /usr/bin/X :0&

您可以使用像supervisor这样的流程管理器来处理上面的过程。

现在,只需设置DISPLAY环境变量,并确保它对您正在运行的任何依赖于此的进程可用,DISPLAY=:0 python manage.py

向应用程序提供环境变量的方式取决于您。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8595538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档