Ken Hartling wrote:

> Thanks .. but I want to find out if the system is "running on 64bit"
> even when the interpreter is a 32-bit build executable ("what python
> was built on").  platform.architecture() and platform() in general
> seems to only be looking at the build executable

You can pass in an arbitrary binary to architecture(), so I guess you could use this on some suitable thing under "/bin" on a Unix box. This doesn't work on Windows, though.

In this message,

    http://mail.python.org/pipermail/python-list/2005-June/326158.html

Thomas Heller suggests using ctypes to call the Windows API directly; so something like this could work:

>>> import ctypes, sys
>>> i = ctypes.c_int()
>>> kernel32 = ctypes.windll.kernel32
>>> process = kernel32.GetCurrentProcess()
>>> kernel32.IsWow64Process(process, ctypes.byref(i))
1
>>> is64bit = (i.value != 0)
>>> is64bit
False

(IsWow64Process returns a non-zero value if it manages to check the status, and sets the variable to a non-zero value if the process is running under WOW64. I only have 32-bit boxes here, so it's only partially tested).

And yes, looks like official support for this might appear in 2.6:

http://mail.python.org/pipermail/python-dev/2008-May/079022.html

(in that thread, Mark Hammond suggests "'64 bit' in sys.version" as a workaround, but warns for false negatives).

</F>

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to