从 WSL 运行 Windows 工具

从 WSL 运行 Windows 工具

所以,最近我从 Windows 应用商店安装了 WSL,现在我在使用 Python 时遇到了一些问题。我已经在 Windows 10 上安装了 Python 及其一些库,但每当我py在 Ubuntu 终端中输入时,它都无法理解,只有当我输入“python3”时它才能理解。有没有办法添加命令py来激活 Python?同样在交互模式 ( $python3 -i) 中,每当我尝试import任何库(即 numpy)时,它都会抛出一个错误 ( ModuleNotFoundError: No module named 'numpy'),而我的 Windows 上已经安装了 numpy。这就像 WSL 的行为一样,它甚至看不到安装在我 Windows 上的 Python 及其库!

我的 WSL 苦苦挣扎的图片

答案1

正如解释的那样Windows Subsystem for Linux 与 Windows 的互操作性为了从 WSL 命令行执行 Windows 程序,需要满足一些条件:

从 WSL 运行 Windows 工具

WSL 可以使用 [二进制名称].exe 直接从 WSL 命令行调用 Windows 二进制文件。例如,notepad.exe。为了使 Windows 可执行文件更易于运行,Fall Creators Update 中的 Linux $PATH 中包含了 Windows 路径。

省略了一些不相关的内容

Windows 二进制文件必须包含文件扩展名、匹配文件大小写并且可执行。非可执行文件包括批处理脚本。可以使用 cmd.exe /C 命令运行 dir 等 CMD 本机命令。

因此,如果你的 Windows 版本的 python3 是常规可执行文件,你应该能够将其运行为

python3.exe

否则(显然这包括从微软商店安装到 WindowsApps 的 python3 版本)你将需要使用

cmd.exe /C python3.exe

答案2

问题就在这里。WSL 安装的 Python 版本与您的 Windows 计算机不同。您可以像这样链接它们:

在 WSL 中运行以下命令:

$ sudo apt remove python3 python3-pip
$ sudo apt autoremove

现在在.bashrcWSL 上添加以下内容:

alias python3="cmd.exe /C python3"
alias pip3="cmd.exe /C pip3"

现在重新启动您的 WSL 应用程序,就好了!它应该可以工作!这对我来说非常有效...

相关内容