所以,最近我从 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 及其库!
答案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
现在在.bashrc
WSL 上添加以下内容:
alias python3="cmd.exe /C python3"
alias pip3="cmd.exe /C pip3"
现在重新启动您的 WSL 应用程序,就好了!它应该可以工作!这对我来说非常有效...