我去年玩过 WSL,但当时它无法运行我想要尝试的神经网络项目。显然这与它的内核过时或类似的东西有关。
从那时起,WSL 就有很多更新。在 WSL 上运行 Ubuntu 上的程序有什么限制?它们本质上是等同的吗?我可以使用一些信息来提前确定这一点吗?
答案1
来自WSL 常见问题解答:
我可以在 WSL 中运行所有 Linux 应用程序吗?
不!WSL 是一种旨在使有需要的用户能够在 Windows 上运行 Bash 和核心 Linux 命令行工具的工具。
WSL 不旨在支持 GUI 桌面或应用程序(例如 Gnome、KDE 等)
此外,即使您能够运行许多流行的服务器应用程序(例如 Redis),我们也不建议在服务器场景中使用 WSL——Microsoft 提供了多种解决方案,用于在 Azure、Hyper-V 和 Docker 中运行生产 Ubuntu 工作负载。
还有官方测试用于 Linux 测试程序,它提供了一些有关软件的见解,以及它们是否有效或接近有效。
上面的两个链接是官方立场。微软指出的一件事是,WSL 并不打算支持图形界面。不过,用户可以运行微软和统一。
当有人能让 Unity 在 WSL 上工作时,我怀疑是否存在任何限制。WSL 的很多方面都是未经证实的,因此让某些东西工作可能取决于用户(即,在这种情况下是你 ;) )。
答案2
自从提出这个问题以来,WSL 的事情已经稍微平息了一点,我想传递这个信息。
我可以报告说,基本上可以在 WSL 中执行任何只需要 CPU 的常规 Linux 任务。这意味着您可以轻松运行 GUI 应用程序,甚至整个桌面环境,但这也意味着运行神经网络更像是一种浪费电力的行为。(WSL 也缺少 CUDA 驱动程序,尽管如果 WSL 确实可以获得 GPU 访问权限,Ubuntu 有 CUDA 驱动程序可能会使用)
GUI 应用程序
您可以通过以下方式获取 GUI 应用程序:
您所要做的就是:
- 安装 Windows X 服务器。我使用虚拟主机
- 使用以下命令将路由信息添加到 bash:
如果您运行 zsh,只需将导出显示信息添加到您的 .zshrc 文件中。echo "export DISPLAY=localhost:0.0" >> ~/.bashrc
如果您运行 zsh,只需将导出显示信息添加到您的 .zshrc 文件中。
我解决了想要运行神经网络的问题...只需在我的桌面上安装 Linux,哈哈。这样就简单多了。
更广泛地回答这个问题
WSL 的最大限制是 Linux 和 Windows 文件系统并不真正兼容。Linux 文件使用与 Windows 文件不同的权限方案,当您在 WSL 主文件夹中编辑或保存文件时,~/
您会使用元数据保存它,这会使 Windows 在记事本中只显示一个空文件。行尾的差异也存在一些问题(Linux 上的 LF 与 Windows 上的 CRLF),但这不是什么大问题,尤其是因为 Microsoft 已允许 VS Code 和记事本使用任一行尾。
从技术上讲,可以通过 Windows 资源管理器访问 Linux 文件系统,但这是极不建议的,而且如果您愿意的话,您实际上无法用它做任何事情。