如何在 Ubuntu 16 上运行的 Apache2 上设置 $Display 变量

如何在 Ubuntu 16 上运行的 Apache2 上设置 $Display 变量

我在 Azure 上运行 Ubuntu 16 服务器。我安装了 Apache2,然后尝试运行一个 Python 代码来截取屏幕截图并将其保存在当前目录中。该代码应该从我的网页截取屏幕截图。但是当我运行它时,我在日志中收到此错误:

Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/mss/linux.py", line 132, in __init__
    display = os.environ['DISPLAY'].encode('utf-8')
  File "/usr/lib/python3.5/os.py", line 725, in __getitem__
    raise KeyError(key) from None
KeyError: 'DISPLAY'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.5/dist-packages/mss/factory.py", line 34, in mss
    return MSS(**kwargs)
  File "/usr/local/lib/python3.5/dist-packages/mss/linux.py", line 134, in __init__
    raise ScreenShotError('$DISPLAY not set.', locals())
mss.exception.ScreenShotError: ('$DISPLAY not set.', {'display': None, 'self': <mss.linux.MSS object at 0x7f06ce881d30>})

我搜索了很多,最后才知道这个错误与 Ubuntu 中的 $Display 变量有关。那么如何修复这个问题并允许我的代码截取网页截图并将其保存到我当前的目录中呢?

答案1

要截取屏幕截图,首先需要一个可以复制到图片的视口。如果你想将网页直接渲染为图片,我建议pageres->https://github.com/sindresorhus/pageres。Github 页面介绍了安装。也可以使用 Firefox,但有一些限制。booleanworld 上有一篇关于命令行网站截图的好文章:如何从命令行截取网页截图

相关内容