如何检测Python是否作为64位应用程序运行?

Nic*_*ton 105 python 64-bit

可能重复:
如何确定我的python shell是在32位还是64位模式下执行?

我正在使用Windows注册表做一些工作.根据您是以32位还是64位运行python,键值将不同.如何检测Python是作为64位应用程序而不是32位应用程序运行?

注意:我对检测32位/ 64位Windows不感兴趣 - 只是Python平台.

Cri*_*ian 183

import platform
platform.architecture()
Run Code Online (Sandbox Code Playgroud)

Python文档:

查询给定的可执行文件(默认为Python解释器二进制文件)以获取各种体系结构信息.

返回元组(位,链接),其中包含有关位体系结构和用于可执行文件的链接格式的信息.这两个值都以字符串形式返回.

  • 不可靠...... http://stackoverflow.com/a/12057504/156755 (5认同)
  • 有人可以提供2017年的更新.所有这一切都令人困惑.`sys.maxsize`今天是正确的方法吗?或者`platform.architecture()`现在可以在OS X,Win和Linux上可靠地运行吗? (2认同)

Ned*_*ily 61

虽然它可能在某些平台上有效,但请注意,platform.architecture确定python是以32位还是64位运行并不总是一种可靠的方法.特别是,在某些OS X多架构构建中,相同的可执行文件可以在任一模式下运行,如下面的示例所示.最快的安全多平台方法是sys.maxsize在Python 2.6,2.7,Python 3.x上进行测试.

$ arch -i386 /usr/local/bin/python2.7
Python 2.7.9 (v2.7.9:648dcafa7e5f, Dec 10 2014, 10:10:46)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform, sys
>>> platform.architecture(), sys.maxsize
(('64bit', ''), 2147483647)
>>> ^D
$ arch -x86_64 /usr/local/bin/python2.7
Python 2.7.9 (v2.7.9:648dcafa7e5f, Dec 10 2014, 10:10:46)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform, sys
>>> platform.architecture(), sys.maxsize
(('64bit', ''), 9223372036854775807)
Run Code Online (Sandbox Code Playgroud)

  • 在Windows x64 Python上,`sys.maxint == 2147483647`所以没有骰子.那是因为Windows上的C int是32位,32位和64位. (5认同)
  • 我认为这是一个错误.看一下平台模块中的代码,它看起来有点脆弱,在这种情况下,它与Apple实现多拱选择功能的方式有关.我正在添加一个注释,以确保在python.org OS X多拱选择功能完成时查看此内容. (2认同)