我什么时候应该使用os.name与sys.platform和platform.system()?

时间:2013-09-26 01:37:41

标签: python operating-system

至少有三种方法可以在Python中检测OS /平台。

每种方法的理想应用是什么?什么时候应该使用另一种方法?


编辑:我的具体用例是安装时和运行时检查依赖项。如果我在“Windows”上,我不想在setup.py中安装某些库,因为它需要Visual Studio。然后,在运行时我想检查依赖项是否可用(它可能不在“Windows”上)。

编辑2:看一个需要每个级别的操作系统细节的简短示例也很棒。

1 个答案:

答案 0 :(得分:7)

这取决于您需要多少信息。

os.name只会让您对您所处的环境有一个高层次的了解(例如POSIX与Windows NT) - 甚至不是操作系统名称。文档说:

  

另请参阅 sys.platform具有更精细的粒度。 os.uname()提供与系统相关的版本信息。   平台模块提供对系统身份的详细检查。

sys.platform为您提供了更多信息,例如,您可以告诉您是否正在运行Linux与FreeBSD。

platform模块将为您提供最多信息,包括您正在运行的操作系统版本以及处理器信息。

因此,您应该指定您要完成的具体内容,然后可能会明确哪种方法最合适。