如何在 MSYS2 中使用 Windows Python 安装

Posted

技术标签:

【中文标题】如何在 MSYS2 中使用 Windows Python 安装【英文标题】:How to use Windows Python install in MSYS2 【发布时间】:2020-11-06 19:45:35 【问题描述】:

我在 Visual Studio Code 中使用 MSYS2 作为终端以支持 GCC,并使用一些在 Linux 环境中更容易构建的工具。但是,我想在 Windows 上安装 Python 并使用它而不是使用 MSYS2 打包的 Python。我目前的解决方法是在我的.bashrc 中定义以下别名:

alias python='$PYTHONPATH/../../python.exe'
alias pip='$PYTHONPATH/../../pip.exe'

我最近尝试使用 venv,这会导致问题,因为当我从 MINGW 终端键入 python 时,它指向我的 Windows python 而不是 venv python。这显然不是一个错误,但我需要一种方法来使用 Windows python 而不是 MSYS2 python 来处理 numpy、tox、matplotlib 等包,因为这些包的 MSYS2 包令人头疼,目前,MSYS2 中的 tox+pytest 没有工作。目前,我上面的解决方案适用于我在 Python 中投入的所有内容。

那么,我的问题是如何在没有上述 hack 的情况下使用我的 Windows Python 安装而不是 POSIX/Windows MSYS2 Python?有没有办法可以定义 PATH 以将我的 Windows Python 作为 MSYS2 PATH 中的第一个条目?

这是它现在的样子:

$echo $PATH
/mingw64/bin:/usr/local/bin:/usr/bin:/bin:/c/Users/Glen.Nicholls/AppData/Local/Programs/Python/Python37/Scripts:/c/Users/Glen.Nicholls/AppData/Local/Programs/Python/Python37

我想知道如何改成以下,从 MSYS2 中删除 python,或者找到另一种方法来完成。

/c/Users/Glen.Nicholls/AppData/Local/Programs/Python/Python37/Scripts:/c/Users/Glen.Nicholls/AppData/Local/Programs/Python/Python37:/mingw64/bin:/usr/local/bin:/usr/bin:/bin:...

【问题讨论】:

【参考方案1】:

您必须将/c/Users/Glen.Nicholls/AppData/Local/Programs/Python/Python37/c/Users/Glen.Nicholls/AppData/Local/Programs/Python/Python37/Scripts 的路径放在msys2 上的路径之前,对吗?然后我不会尝试使用终端,因为它太棘手了,所以,我将使用控制面板更容易地做到这一点。以下是一些屏幕截图,我将为您执行此操作。

(抱歉我放不了图片,只能放链接,因为我是新会员,所以放不下图片。另外,对不起,我把说明写得太详细了。)

首先,使用Windows+S 键打开搜索框。

然后,从窗口中选择环境变量选项。

然后,在底部选择PATH系统变量,选择edit(上为用户PATH,下为系统PATH

这是以前的样子:--

然后,选择 C:/Users/Glen.Nicholls/AppData/Local/Programs/Python/Python37 并单击“上移”直到完成。同样,对“C:/Users/Glen.Nicholls/AppData/Local/Programs/Python/Python37/Scripts”执行相同操作,直到它位于顶部。

这就是现在的样子:--

完成后,重新启动您的终端,希望它能正常工作。 :D

【讨论】:

以上是关于如何在 MSYS2 中使用 Windows Python 安装的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 7+ 和 MSYS2 上的 GTK3 上获取本机 Windows 装饰

如何在 Windows 上将 std::filesystem 与 mingw32-make 和 msys2 一起使用

如何在 msys2 中使用 gitk?

如何使用 MSYS2 在 Windows 上安装 GTK3 和 minGW

调试使用 mingw/msys2 构建的 Windows 服务

msys2:尽管没有找到 Windows 程序(MSYS2_PATH_TYPE = 继承)