Linux DISPLAY 变量设置的 Windows 子系统

rak*_*bar 3 windows-subsystem-for-linux

我正在尝试使用适用于 Linux 的 Windows 子系统,并尝试使用 Matplotlib 创建 python 绘图。但我收到以下错误

RuntimeError: Invalid DISPLAY variable
Run Code Online (Sandbox Code Playgroud)

echo DISPLAY什么也没显示。我该如何设置DISPLAY变量?

Mic*_*l S 6

Linux 的 Windows 子系统不\xe2\x80\x99t 正式支持图形 GNU/Linux 桌面应用程序,因此我们不能保证我们选择的图形程序进行的调用将实现为 Windows 系统调用。

\n\n

您遇到的主要问题是这些程序缺乏图形界面,称为“X-服务器”。我们可以尝试通过以下方式解决这个问题:

\n\n
    \n
  1. 安装 X 服务器(例如Xming)。
  2. \n
  3. 通过设置环境变量告诉 Windows Linux 子系统使用此 X 服务器作为 DISPLAY。
  4. \n
\n\n

对于(1),要安装Xming,您只需下载并接受默认设置,它将自动启动并等待图形程序显示。

\n\n

要解决 (2) 问题,请在运行图形程序之前运行:

\n\n
export DISPLAY=:0\n
Run Code Online (Sandbox Code Playgroud)\n\n

这样 bash 就知道将正在运行的程序的图形输出发送到哪里。

\n\n

然后你可以尝试运行一个简单的图形程序(例如gvim或python的turtle模块)。

\n\n

同样,不能保证这适用于所有 GNU/Linux 应用程序,因为 Microsoft 尚未将每个 Linux 系统调用转换为 Windows 系统调用,并且如果您正在运行的图形程序进行此类不受支持的调用,您的程序可能会崩溃。

\n\n

这些说明大部分取自以下指南,该指南展示了如何让 gvim 在适用于 Linux 的 Windows 子系统上工作:

\n\n

http://www.howtogeek.com/261575/how-to-run-graphical-linux-desktop-applications-from-windows-10s-bash-shell/

\n\n
\n\n

编辑:由于您还询问了检查 中的内容DISPLAY,我补充说您可以DISPLAY通过运行以下命令来检查变量的值:

\n\n
echo $DISPLAY\n
Run Code Online (Sandbox Code Playgroud)\n\n

(这$确保 bash 将后面的内容解释为变量,而不是字符串文字。运行echo DISPLAY只会回显字符串 DISPLAY。)

\n