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

5

尽管当前官方Python版本是3.6,但msys2提供了两个与python3相关的软件包:

那么我应该在什么情况下使用哪个版本呢?我不能只使用Windows的3.6并告诉pacman使用它吗?或者我能否在msys/mingw版本中运行3.6,并在Windows中也使用它,这样我就不需要安装两个/三个版本了吗?


1
不,主要版本(3)和次要版本(6)必须相同,因为它们与Python源代码链接。您的选项是使用早期版本的Python、等待模块的新版本或自行编译。 - cdarke
1
msys/python3 行为类似于 Linux 上的 Python(带有一些补丁),而 mingw64/mingw-w64-x86_64-python3 则类似于 Windows 上的 Python。但由于需要更新/重新制作大量补丁,它已经有点过时了。在没有 MSYS2 特定补丁的情况下使用 Python for Windows 可能会导致非明显的错误。 - mati865
@mati865 我又读了一些资料 - msys/python 和 mingw/native python 之间的唯一区别不应该只是支持 cygwin 样式路径吗?或者说 mingw 版本除了本地版本外还提供了什么?我唯一希望的是更好的编译支持,但是例如 pip install numpy 也失败了,因为缺少 python35.dll。我需要深入挖掘一下... - Tobias Kienzler
@Tobias Kienzler 你解决了吗?在编译软件包时,msys/python3 更易于使用吗?不需要 msvc++ 吗? - Mithril
@Mithril 很不幸,目前没有进展也没有时间进行测试... 如果你找到了什么,请添加一个答案。否则你可以尝试使用悬赏... - Tobias Kienzler
3个回答

6
这里存在两个版本的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提供的更详细的解释。

6

这是我在msys2上安装python3所使用的方法:

$ pacman -Syuu

关闭并重新启动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

要解决这个错误“没有intltool或版本<0.25.0,build_intl正在中止”,请执行以下操作:

$ pacman -S intltool

添加这些进行测试:

$ pacman -S mingw-w64-x86_64-python3-lxml
$ pacman -S mingw-w64-x86_64-python3-jsonschema

执行以下命令来验证Python3是否已正确安装:
$ python3 --version
Python 3.6.4

请参考https://www.gramps-project.org/wiki/index.php?title=Gramps_for_Windows_with_MSYS2了解详情。该网站与MSYS2有关,涉及IT技术相关内容。

1
我已经安装了Python3(同时它已经更新到3.6.5(mingw64)和3.6.2(msys2)),所以恐怕你误解了我的问题 - 我想知道我当前拥有的这三个Python(本机Windows,mingw64,msys2)中应该何时以及为什么使用哪一个,以及是否可以由于冗余性而至少摆脱其中之一。 - Tobias Kienzler
顺便提一下,Gramps 的链接不错,值得独立检查。 - Tobias Kienzler
好的,我对msys/python3不是很了解,但看起来mingw-w64-x86_64-python3在gramps项目中已经成功了。 - user8128167
将 /usr/bin 链接到 /mingw64/bin 对于 msys2 安全吗?在更新了数据库之后,我找到了 Python3 的安装位置。 - Paul Allsopp

3

虽然可能有点晚了,但我在MSYS2中使用的是本机Windows安装的Python。我这样做的方法是确保Python添加了环境变量。之后,我创建了一个新的Windows环境变量 PYTHONPATH=C:\Users\Glen.Nicholls\AppData\Local\Programs\Python\Python37\Lib\site-packages。我还设置了MSYS遗传在 MINGW64.ini 中。现在,我将pippython的别名添加到我的 .bashrc 文件中:

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

这不是最干净的解决方案,但在我的环境中运行良好。另外请注意,如果您运行 which python ,它将无法指向正确的安装。

另一种方法是在不创建别名和上述所有内容的情况下,将您的PATH更改为在msys PATH之前包含继承的Windows PATH。 您可以手动编辑此内容,也可以在您的.bash_profile.bashrc中添加一些花哨的东西。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接