python - 什么时候应该使用 os.name vs. sys.platform vs. platform.system()?

标签 python operating-system

<分区>

至少有三种方法可以在 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/

相关文章:

python - 返回自定义时间戳

iphone - 我的页面在 PC 或 Mac 上加载正常,但在装有 iOS 5.1.1 的 iPad 或 iPhone 上完全消失

python - TemplateDoesNotExist at/polls/- 在 Django 教程中

python : Submit a form on website using python

windows - 为什么无法从具有 PAGE_GUARD 保护的 block 中读取数据?

r - 在 R 中,检测操作系统是否为 64 位的规范方法是什么?

python - 写入文件循环问题

c - 如何用C语言创建操作系统?

multithreading - 在多线程进程中跨线程共享程序状态的哪些组件?

networking - NIC MMIO 区域有何用途?