Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检测Python是否作为64位应用程序运行?_Python_64 Bit - Fatal编程技术网

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

如何检测Python是否作为64位应用程序运行?,python,64-bit,Python,64 Bit,可能重复: 我正在用windows注册表做一些工作。根据您是以32位还是64位运行python,键值将有所不同。如何检测Python是否作为64位应用程序而不是32位应用程序运行 注意:我对检测32位/64位窗口不感兴趣,只对Python平台感兴趣 import platform platform.architecture() 从: 查询给定的可执行文件(默认值) 到Python解释器(二进制)的 各种架构信息 返回一个元组(位、链接),该元组 包含有关位的信息 体系结构和链接格式 用于可执

可能重复:

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

注意:我对检测32位/64位窗口不感兴趣,只对Python平台感兴趣

import platform
platform.architecture()
从:

查询给定的可执行文件(默认值) 到Python解释器(二进制)的 各种架构信息

返回一个元组(位、链接),该元组 包含有关位的信息 体系结构和链接格式 用于可执行文件。两种价值观 作为字符串返回


虽然它可以在某些平台上工作,但要注意,
platform.architecture
并不总是确定python是以32位还是64位运行的可靠方法。特别是,在某些OSX多体系结构构建上,同一可执行文件可能能够在任一模式下运行,如下例所示。最快的安全多平台方法是在Python2.6、2.7和Python3.x上测试sys.maxsize

$ 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)

有意思,明白了。不过闻起来有点像虫子。它应该是这样工作的吗?我会认为这是一个错误。看看平台模块中的代码,它似乎有点脆弱,在这种情况下,它与苹果实现其多拱门选择功能的方式有关。我添加了一个注释,以确保在python.org OS X multi-arch选择功能最终确定时我们会看到这一点。(我还打开了苹果的一个bug。)在Windows x64 python上,
sys.maxint==2147483647
因此没有骰子。这是因为Windows上的C int对于32位和64位来说是32位的。有关不涉及
sys.maxint
的旧Python版本的另一种方法,请参阅。标记为重复的问题是针对OSX的,这个问题不同。投票表决不可靠。。。有人能告诉我2017年的最新情况吗。这让noobs很困惑。
sys.maxsize
是现在的正确选择,还是
platform.architecture()
在OS X、Win和Linux上运行可靠?很好,它工作正常。如果您想在命令提示符下检查,请先运行“python”命令,然后在“>>>”之后运行“import platform;platform.architecture()”
platform.architecture()
存在问题且价格昂贵。从Py2.6开始使用
sys.maxsize>2**32
。或者至少自Py2.3以来更可靠、更兼容:
struct.calcsize('P')==8
。或者
ctypes.sizeof(ctypes.c\u void\u p)==8
。可以使用gcc选项
-mx32
或其他类似的版本,它们是64位应用程序,但默认使用32位指针sys.maxsize=ssize_t'可能不严格表示C指针大小(通常是
2**31-1
),有些系统的代码和数据指针大小不同,需要澄清“作为64位应用程序运行”的确切目的是什么