使用sys.platform=='安全吗;win32';检查64位Python?

使用sys.platform=='安全吗;win32';检查64位Python?,python,windows,64-bit,cross-platform,32bit-64bit,Python,Windows,64 Bit,Cross Platform,32bit 64bit,区分在Windows和其他操作系统(通常为Linux)上运行Python应用程序的常用检查方法是使用条件: if sys.platform == 'win32': ... 但我想知道,当64位Python在过去几年得到更广泛的应用时,今天使用它安全吗?32是否真的意味着32位,或者基本上它指的是Win32 API 如果有可能将某一天的sys.platform设置为“win64”,那么这种情况可能更普遍 if sys.platform.startswith('win'): ...

区分在Windows和其他操作系统(通常为Linux)上运行Python应用程序的常用检查方法是使用条件:

if sys.platform == 'win32':
    ...
但我想知道,当64位Python在过去几年得到更广泛的应用时,今天使用它安全吗?32是否真的意味着32位,或者基本上它指的是Win32 API

如果有可能将某一天的sys.platform设置为“win64”,那么这种情况可能更普遍

if sys.platform.startswith('win'):
    ...
我知道还有另一种检测Windows的方法:

if os.name == 'nt':
    ...
但我真的从未在其他代码中看到后者的使用

那最好的办法是什么


UPD:如果可能,我希望避免使用额外的库。要求安装额外的库来检查我是否在Windows中工作可能会让Linux用户感到恼火

Windows/32和Windows/64的注意事项是相同的,因此它们应该使用相同的值。唯一的区别在于,例如,
sys.maxint
ctypes
。如果您需要区分32和64,那么
平台
是您的最佳选择。

我个人使用它来检测底层平台

>>> from platinfo import PlatInfo
>>> pi = PlatInfo()
>>> pi.os
'win64'
>>> pi.arch
'x64'
>>> pi.name()
'win64-x64'

对于32位,
pi.name()

可以在web上找到介绍这一点的方法,它提供了更多的解释:

主要的问题是:Win64与Win32的相似程度是否超过了它与Win32的不同程度,以至于普通Python程序员不必在其Python代码中进行区分。或者,至少,Python脚本编写器的这种差异非常罕见,其他提供的机制就足够了(甚至更好)。目前的答案是肯定的。希望MS不会改变这个答案


请注意,您不能在Jython上使用
sys.platform
os.name

$ jython -c "import sys, os; print sys.platform; print os.name"
java1.6.0_20
java
我认为Jython项目中有一个计划,就是改变
os.name
来报告底层操作系统,就像CPython一样,但是因为人们使用
os.name==“java”
来检查他们是否在Jython上,所以这个改变不可能在一夜之间完成。然而,Jython 2.5.x上已经有了
os.\u name

$ jython -c "import os; print os._name"
posix

就我个人而言,我倾向于将
os.sep=='/'
与需要在Jython和CPython以及Windows和unixy平台上运行的代码一起使用。这有点难看,但很管用。

这是一个很好的问题。谢谢。如果我能从vanilla Python中得到我需要的东西,我宁愿避免使用额外的依赖项。我不太明白你的答案。你说64位Python是在sys.platform中使用“win32”构建的吗?对我来说,真正的问题是,我周围没有64位机器来检查这个假设。Windows/64版本使用“win32”。(显然其他64位操作系统没有)对于IronPython
sys.platform=='cli'
$ jython -c "import os; print os._name"
posix