我正在尝试使用CutyCapt在后台截取屏幕截图
我的应用程序是用 python 编写的,并通过运行一个子进程来调用 CutyCapt。
在本地(Windows)工作得很好,但用于 Windows 的 CutyCapt.exe 不需要 x 服务器。当我尝试在我的 ubuntu 机器上执行我的代码(通过 python 子进程)时,它会抱怨我没有向 Xvfb 提供命令。但是,如果我自己在盒子上运行命令,它就可以正常工作。
适用于盒子的命令:
box$ xvfb-run --server-args="-screen 0, 1100x800x24" ./CutyCapt --url=http://www.google.com --out=temp.png
失败的 Python 代码:
def url_screengrab(url, **kwargs):
url, temp_path, filename, url_hash = get_temp_screengrab_info(url)
args = []
if sys.platform.startswith("linux"):
args.append('xvfb-run')
args.append('--server-args="-screen 0, 1100x800x24"')
args.append(settings.CUTYCAPT_EXE_PATH)
args.append('--url=%s' % (url))
args.append('--out=%s' % (temp_path,))
subprocess.Popen(args, shell=False)
return temp_path, filename, url_hash
返回错误:
xvfb-run: usage error: need a command to run
box$
我尝试过的事情: - 使用 call 而不是 Popen - 从屏幕 args 中剥离引号 - 将屏幕 args 分解为列表 - 在执行子进程之前设置 os.environ["DISPLAY"]=":0"
我是否需要从 CutyCapt 命令中拆分 xvfb 进程?
任何帮助将不胜感激。