<分区>
至少有三种方法可以在 Python 中检测操作系统/平台。
每种方法的理想应用是什么?什么时候应该使用一种方法而不是另一种方法?
编辑:我的具体用例是安装时和运行时检查依赖项。如果我在“Windows”上,我不想在 setup.py
中安装某些库,因为它需要 Visual Studio。然后,在运行时我想检查依赖项是否可用(它可能不在“Windows”上)。
编辑 2:如果能看到一个简短的示例,说明何时需要每个级别的操作系统详细信息,那也很棒。
<分区>
至少有三种方法可以在 Python 中检测操作系统/平台。
每种方法的理想应用是什么?什么时候应该使用一种方法而不是另一种方法?
编辑:我的具体用例是安装时和运行时检查依赖项。如果我在“Windows”上,我不想在 setup.py
中安装某些库,因为它需要 Visual Studio。然后,在运行时我想检查依赖项是否可用(它可能不在“Windows”上)。
编辑 2:如果能看到一个简短的示例,说明何时需要每个级别的操作系统详细信息,那也很棒。
最佳答案
这取决于您需要多少信息。
os.name
只会让你对你所处的环境有一个高层次的了解(例如 POSIX 与 Windows NT) - 甚至不是操作系统名称。文档说:
See also
sys.platform
has a finer granularity.os.uname()
gives system-dependent version information. The platform module provides detailed checks for the system’s identity.
sys.platform
为您提供更多信息,例如,实际上可以告诉您您运行的是 Linux 还是 FreeBSD。
platform
模块将为您提供最多的信息,包括您正在运行的操作系统版本和处理器信息。
因此,您应该具体说明您要完成的具体目标,然后很可能会清楚哪种方法最合适。
关于python - 什么时候应该使用 os.name vs. sys.platform vs. platform.system()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19017927/