我正在一个没有X服务器的服务器上工作,并试图运行一个使用spynner模块的脚本,这需要一个X服务器。为此,我想运行Xvfb。
我可以通过xvfb-run
调用来运行脚本,即:
xvfb-run python2.6 try.py.
这个工作没有问题。但是,我需要从脚本中调用Xvfb。为此,我尝试使用subprocess,如下所示:
xvfb = subprocess.Popen(['Xvfb', ':99'])
将这段代码添加到脚本的开头,并尝试以
方式运行脚本后python2.6 try.py
我得到消息:
: cannot connect to X server
还有什么我需要做的吗?
对于将来的访问者,值得一提的是PyVirtualDisplay提供了一个对Xvfb的抽象,使其易于从Python中使用。
你需要添加:
import os
os.environ["DISPLAY"]=":99"
这样当它打开与X服务器的连接时它就能找到你启动的Xvfb实例