使用 msys2 时我应该安装哪个 Python(以及如何安装)?

Tob*_*ler 2 python mingw msys2

虽然当前的官方 Python 版本是 3.6,但 msys2 提供了两个python3

那么我应该在何时以及如何使用哪个版本?我不能只使用 Windows 3.6 并以某种方式告诉pacman使用它吗?或者我可以在 msys/mingw'd 版本中运行 3.6 并在 Windows 中使用它,所以我不需要两个/三个安装?

Dan*_*eaw 7

为什么有两个版本的 Python,但两者都服务于不同的用例,这可能会令人困惑:

  1. MINGW - Windows 本机应用程序
  2. MSYS2 - 模拟在 Windows 中工作的 POSIX 应用程序

MINGW 是指使用 MINGW GCC 编译器编译并面向 Win32 API 的可执行文件。MSYS2 是指由 MSYS2 GCC 编译器编译并使用 POSIX 模拟层的可执行文件。

我知道作为一个用户这可能会令人困惑,为什么你关心 Python 是针对哪个编译器和 API 进行编译的呢?您可能想要使用的某些程序依赖于在 POSIX 环境中运行。将这些应用程序移植到 Windows 将非常困难且耗时。在这些情况下,MSYS2 提供了一个仿真层来允许这些应用程序工作。不幸的是,使用这个模拟层的速度非常慢。

所以一般来说,如果你可以使用 MINGW 版本的 Python,你应该使用它,因为它会快得多。但是,如果您尝试运行依赖于 POSIX 环境的 Python 应用程序,那么 MSYS2 提供了一个模拟层来帮助其工作。

有关更多信息,Git for Windows Wiki提供了更详细的解释。


use*_*167 6

这是我在 msys2 上用来安装 python3 的:

$ pacman -Syuu
Run Code Online (Sandbox Code Playgroud)

关闭并重新启动 msys2。

$ pacman -S mingw-w64-x86_64-python3-bsddb3 mingw-w64-x86_64-gexiv2 mingw-w64-x86_64-ghostscript mingw-w64-x86_64-python3-cairo mingw-w64-x86_64-python3-gobject mingw-w64-x86_64-python3-icu mingw-w64-x86_64-iso-codes mingw-w64-x86_64-hunspell mingw-w64-x86_64-hunspell-en mingw-w64-x86_64-enchant
Run Code Online (Sandbox Code Playgroud)

要处理此错误“No intltool or version < 0.25.0, build_intl is aborting”,请执行以下操作:

$ pacman -S intltool
Run Code Online (Sandbox Code Playgroud)

添加这些来测试:

$ pacman -S mingw-w64-x86_64-python3-lxml
$ pacman -S mingw-w64-x86_64-python3-jsonschema
Run Code Online (Sandbox Code Playgroud)

执行此命令以验证 python3 是否已正确安装:

$ python3 --version
Python 3.6.4
Run Code Online (Sandbox Code Playgroud)

详情请参见https://www.gramps-project.org/wiki/index.php?title=Gramps_for_Windows_with_MSYS2