|
Prev: beautifulsoup .vs tidy
Next: Python for modem App
From: dwelch91 on 7 Jul 2006 14:03 I need to detect whether the operating system I am running on (not the Python version) is 64bit or 32bit. One requirement is that I need to include support for non-Intel/AMD architectures. The 2 ways I have thought detecting 64bit are: 1. struct.calcsize("P") == 8 2. '64' in os.uname()[4] I'm not convinced that either one of these is really adequate. Does anybody have any other ideas on how to do this? Thanks, Don
From: Jim Segrave on 8 Jul 2006 06:04 In article <44aea052$1(a)usenet01.boi.hp.com>, dwelch91 <donald.welch(a)hp.com> wrote: >I need to detect whether the operating system I am running on (not the >Python version) is 64bit or 32bit. One requirement is that I need to >include support for non-Intel/AMD architectures. > >The 2 ways I have thought detecting 64bit are: > >1. struct.calcsize("P") == 8 >2. '64' in os.uname()[4] > >I'm not convinced that either one of these is really adequate. Does >anybody have any other ideas on how to do this? Does sys.maxint give what you need? I think for most machines this will give you the answer you are looking for - either 2**31 -1 for a 32 bit version or 2**63-1 for a 64 bit version. It's set up during the configure phase of building python If you want to detect a 64bit OS running a compatibility mode for a 32 bit version of Python, then you'll need to figure out how to build and incorporate a Python extension which can detect this situation -- Jim Segrave (jes(a)jes-2.demon.nl)
From: MrJean1 on 8 Jul 2006 13:14 Try function architecture() from the platform module in Python 2.3 and 2.4. The first item of the returned tuple shows whether the underlying system is 64-bit capable. Here is what it returns on RedHat Fedora Core 2 Linux on Opteron: >>> platform.architecture() ('64bit', 'ELF') >>> platform.uname() ('Linux', 'XXXX', '2.6.16.14', '#1 SMP Sat Jul 1 14:09:18 CDT 2006', 'x86_64', 'x86_64') On RedHat Fedora Core 2 on Pentium 4: >>> platform.architecture() ('32bit', 'ELF') >>> platform.uname() ('Linux', 'XXXX', '2.6.10-1771-FC2', '#1 Mon Mar 28 00:50:14 EST 2005', 'i686', 'i686') And on MacOS X 10.3.9 G4: >>> platform.architecture() ('32bit', '') >>> platform.uname() ('Darwin', 'XXXX', '7.9.0', 'Darwin Kernel Version 7.9.0: Wed Mar 30 20:11:17 PST 2005; root:xnu/xnu-517.12.7.obj~1/RELEASE_PPC ', 'Power Macintosh', 'powerpc') /Jean Brouwers dwelch91 wrote: > I need to detect whether the operating system I am running on (not the > Python version) is 64bit or 32bit. One requirement is that I need to > include support for non-Intel/AMD architectures. > > The 2 ways I have thought detecting 64bit are: > > 1. struct.calcsize("P") == 8 > 2. '64' in os.uname()[4] > > I'm not convinced that either one of these is really adequate. Does > anybody have any other ideas on how to do this? > > Thanks, > > Don
From: Paul McGuire on 8 Jul 2006 14:46 "MrJean1" <MrJean1(a)gmail.com> wrote in message news:1152378882.958222.281730(a)m73g2000cwd.googlegroups.com... > Try function architecture() from the platform module in Python 2.3 and > 2.4. The first item of the returned tuple shows whether the underlying > system is 64-bit capable. > > Here is what it returns on RedHat Fedora Core 2 Linux on Opteron: > > >>> platform.architecture() > ('64bit', 'ELF') > >>> platform.uname() > ('Linux', 'XXXX', '2.6.16.14', '#1 SMP Sat Jul 1 14:09:18 CDT 2006', > 'x86_64', 'x86_64') > > > On RedHat Fedora Core 2 on Pentium 4: > > >>> platform.architecture() > ('32bit', 'ELF') > >>> platform.uname() > ('Linux', 'XXXX', '2.6.10-1771-FC2', '#1 Mon Mar 28 00:50:14 EST 2005', > 'i686', 'i686') > > > And on MacOS X 10.3.9 G4: > > >>> platform.architecture() > ('32bit', '') > >>> platform.uname() > ('Darwin', 'XXXX', '7.9.0', 'Darwin Kernel Version 7.9.0: Wed Mar 30 > 20:11:17 PST 2005; root:xnu/xnu-517.12.7.obj~1/RELEASE_PPC ', 'Power > Macintosh', 'powerpc') > > One Windows XP 32-bit, I get: >>> import platform >>> platform.architecture() ('32bit', 'WindowsPE') >>> platform.uname() ('Windows', 'awa1', 'XP', '5.1.2600', '', '') >>>
From: Robert Kern on 8 Jul 2006 15:26
Jim Segrave wrote: > In article <44aea052$1(a)usenet01.boi.hp.com>, > dwelch91 <donald.welch(a)hp.com> wrote: >> I need to detect whether the operating system I am running on (not the >> Python version) is 64bit or 32bit. One requirement is that I need to >> include support for non-Intel/AMD architectures. >> >> The 2 ways I have thought detecting 64bit are: >> >> 1. struct.calcsize("P") == 8 >> 2. '64' in os.uname()[4] >> >> I'm not convinced that either one of these is really adequate. Does >> anybody have any other ideas on how to do this? > > Does sys.maxint give what you need? > > I think for most machines this will give you the answer you are > looking for - either 2**31 -1 for a 32 bit version or 2**63-1 for a 64 > bit version. It's set up during the configure phase of building python No. Some 64-bit systems (notably Win64) leave C longs as 32-bit. This is known as the LLP64 data model. -- Robert Kern "I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth." -- Umberto Eco |