2

我在 MSYS2 环境中使用 python。MSYS2 有自己构建的 MINGW python 版本。我也可以从 www.python.org 安装官方 python。

问题来了:如果我想写一个python代码需要知道python版本是MINGW还是官方版本,我该怎么做?

这里有一些我可以想象的方式。

  1. 使用“sys.prefix”对象。它告诉安装目录。MSYS2 通常安装在目录 X:\msys2\.... 中,官方默认安装在 X:\Python27\ 中。但用户可以更改安装目录。所以这不是一个好方法。
  2. 使用“sys.version”对象可以获得带有编译器名称的版本字符串显示。它显示了由 GCC 编译的 MINGW python,由 MSC 编译的官方版本。但是可能有其他版本的python也是由GCC或MSC构建的。

有没有更优雅的方法可以做到这一点?

4

3 回答 3

4

Mingw python3 build 修补了官方sysconfig.get_platform()函数,因此它返回“mingw”,可用于与官方 python 版本区分开来。

https://github.com/Alexpux/MINGW-packages/blob/abd06ca92d876b9db05dd65f27d71c4ebe2673a9/mingw-w64-python2/0410-MINGW-build-extensions-with-GCC.patch#L54

于 2018-07-05T21:13:48.680 回答
0

另一种选择是检查 GCC 是否在 sys.version 中。

例如:

import sys
MSYS2 = ("GCC" in sys.version)
print(MSYS2)
> True

这是因为 sys.version 信息具有使用的编译器类型,而 MinGW 使用 GCC。

python -c "import sys; print(sys.version)"
3.7.4 (default, Aug 15 2019, 18:17:27)  [GCC 9.2.0 64 bit (AMD64)]
于 2019-09-14T18:51:14.250 回答
-1

sys.platformmsys在 msys-Python 中给出when。

于 2017-01-05T18:32:24.430 回答