From: dwelch91 on
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
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
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
"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
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

 |  Next  |  Last
Pages: 1 2
Prev: beautifulsoup .vs tidy
Next: Python for modem App