如何确定python是mingw还是正式构建?
我正在MSYS2环境中使用python。MSYS2有自己的内置MINGW python版本。我还可以从www.python.org安装官方python 问题是:如果我想编写python代码,需要知道python版本是MINGW还是官方版本,我该怎么做 以下是一些我可以想象的方法如何确定python是mingw还是正式构建?,python,windows,gcc,mingw,msys2,Python,Windows,Gcc,Mingw,Msys2,我正在MSYS2环境中使用python。MSYS2有自己的内置MINGW python版本。我还可以从www.python.org安装官方python 问题是:如果我想编写python代码,需要知道python版本是MINGW还是官方版本,我该怎么做 以下是一些我可以想象的方法 使用“sys.prefix”对象。它告诉安装目录。MSYS2通常安装在X:\MSYS2\..目录中。。。。而官方版本默认安装在X:\Python27\中。但是用户可以更改安装目录。所以这不是一个好办法 使用“sys.ve
有什么更优雅的方法可以做到这一点吗?
sys.platform
在msys Python中提供msys
。Mingw python3构建补丁官方sysconfig.get_platform()
函数,因此它返回“Mingw”,并可用于区分官方Python构建
另一个选项是检查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)]
据我所知,您列出的两种方法是了解python版本的两种合理方法。但我很好奇,用户使用哪个版本对您有什么影响?它们都将为相同的版本号提供相同的用户体验。顺便说一下,您可以检查环境变量MSSYSTEM:如果它存在,通常意味着您正在MSYS2外壳中运行。但我不知道您是否关心支持从MSYS2 shell运行官方Python解释器的用户。Hi@marcus,cffi不支持MINGW版本。我想看看是否有更可靠的方法让程序检测到它,然后再使用其他函数。@DavidGrayson:我确实需要从MSYS2I运行它。我建议您实际检查是否支持cffi。使用
try…except
子句检查导入是否有效,并引发适当的错误。MinGW Python不是MSYS Python。在MSYS2上,一个在/usr
中,另一个在/mingw{32,64}
中。