如何确定python是mingw还是官方构建?

时间:2016-03-12 09:58:50

标签: python windows gcc mingw msys2

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

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

以下是我可以想象的一些方法。

  1. 使用" sys.prefix"宾语。它告诉安装目录。 MSYS2通常安装在目录X:\ msys2 \ ....中,官方安装在X:\ Python27 \中作为默认值。但是用户可能会更改安装目录。所以这不是一个好方法。
  2. 使用" sys.version" object可以使用编译器名称显示版本字符串。它显示了由GCC编写的MINGW python,这是由MSC编制的官方版本。但也许有可能还有其他版本的python也是由GCC或MSC构建的。
  3. 有没有更优雅的方法可以做到这一点?

4 个答案:

答案 0 :(得分:1)

在msys-Python中,

msys给出$(...).magnificPopup is not a function

答案 1 :(得分:0)

sys.version是正确的方法

答案 2 :(得分:0)

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

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

答案 3 :(得分: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)]