作者:sanyyy | 来源:互联网 | 2023-05-26 05:52
我正在使用 Pythonplatform模块来识别 MacOS 版本,如下所示:import platformprint(platform.mac_ver())import In [1]: impor
我正在使用 Pythonplatform
模块来识别 MacOS 版本,如下所示:
import platform
print(platform.mac_ver())
import In [1]: import platform
In [2]: platform.mac_ver()
Out[2]: ('10.16', ('', '', ''), 'x86_64')
In [1]: import platform
In [2]: platform.mac_ver()
Out[2]: ('10.16', ('', '', ''), 'x86_64')
输出:
我已经更新到BigSur,版本不对,应该是11.0.1
我查看了平台的源代码,它似乎解析了一个这个文件/System/Library/CoreServices/SystemVersion.plist
来获取信息。从 Python 读取此文件时,我得到了一个不正确的版本,但从 bash 中它是正确的
重击:
Python:
我错过了什么?
这是同一ipython
会话的输出
回答
Amirs-MacBook-Pro:~ arossert$ cat /System/Library/CoreServices/SystemVersion.plist
ProductBuildVersion
20B50
ProductCopyright
1983-2020 Apple Inc.
ProductName
macOS
ProductUserVisibleVersion
11.0.1
ProductVersion
11.0.1
iOSSupportVersion
14.2
>在 Big Sur 发行说明的已知问题部分,存在以下内容:
由于 macOS 版本从 10.x 更改为 11,某些第三方脚本可能会产生意外结果。 (62477208)
解决方法:在调用环境中设置SYSTEM_VERSION_COMPAT=1,例如:$SYSTEM_VERSION_COMPAT=1 legacy_script.pl
在https://eclecticlight.co/2020/08/13/macos-version-numbering-isnt-so-simple/ 上还有一个相当广泛的 3rd-party 文章
为 Big Sur 编译的应用程序返回“11.0”作为操作系统版本。
为早期版本编译的应用程序获得“10.16”。这是假设 10 作为前缀不会中断的逻辑。
环境变量SYSTEM_VERSION_COMPAT
可用于控制返回的文件版本;SYSTEM_VERSION_COMPAT=0 cat /System/Library/CoreServices/SystemVersion.plist
返回11.0.1
,而SYSTEM_VERSION_COMPAT=1 cat /System/Library/CoreServices/SystemVersion.plist
返回10.16
。(请注意,赋值和调用之间应该有一个空格,而不是换行符,cat
这样 shell 会将其视为临时环境变量赋值,而不是非导出 shell 变量的赋值)。