I'm editing my answer.
The problem here appears to be that the Python 2.7 version of wintypes.py (from the ctypes 1.1.0 package) starts with
from ctypes import *
while wintypes.py from the Python 3.3 ctypes 1.1.0 package uses:
import ctypes
So basically wintypes.Structure
, .c_uint64
, .sizeof
and .byref
are all from ctypes
. They don't get altered in wintypes
- at least not up to this 1.1.0 version. So this change to Spyder(2.3.0beta3)'s status.py
should make it work with no errors both for Python 2.7 and Python 3.3:
def windows_memory_usage():
"""Return physical memory usage (float)
Works on Windows platforms only"""
from ctypes import windll, Structure, c_uint64, sizeof, byref
from ctypes.wintypes import DWORD
class MemoryStatus(Structure):
_fields_ = [('dwLength', DWORD),
('dwMemoryLoad',DWORD),
('ullTotalPhys', c_uint64),
('ullAvailPhys', c_uint64),
('ullTotalPageFile', c_uint64),
('ullAvailPageFile', c_uint64),
('ullTotalVirtual', c_uint64),
('ullAvailVirtual', c_uint64),
('ullAvailExtendedVirtual', c_uint64),]
memorystatus = MemoryStatus()
# MSDN documetation states that dwLength must be set to MemoryStatus
# size before calling GlobalMemoryStatusEx
# http://msdn.microsoft.com/en-us/library/aa366770(v=vs.85)
memorystatus.dwLength = sizeof(memorystatus)
windll.kernel32.GlobalMemoryStatusEx(byref(memorystatus))
return float(memorystatus.dwMemoryLoad)