arch -i386 python
Запустит двоичный файл в 32-битном режиме (что вы и сделали).
Если вы установили Python через MacPorts, убедитесь, что он действительно собран с 32-разрядным и 64-разрядным (универсальным двоичным кодом).
file `which python`
Это вывод на мой:
λ > file /usr/local/bin/python
/usr/local/bin/python: Mach-O universal binary with 2 architectures
/usr/local/bin/python (for architecture i386): Mach-O executable i386
/usr/local/bin/python (for architecture x86_64): Mach-O 64-bit executable x86_64
Если вы не видите i386
, значит, ваша версия не имеет 32-битной сборки.
Хотя, если вы можете запустить arch -i386 python
, все будет в порядке, поскольку вы получите сообщение об ошибке, если ваш двоичный файл не сможет работать в 32-битном режиме.
Кроме того, не полагайтесь на platform.architecture()
, чтобы сообщить вам, является ли он 32-разрядным, потому что универсальные двоичные файлы сообщат о 64-разрядном режиме, даже если вы находитесь в 32-разрядном режиме. Лучше положиться на sys.maxsize
, который меняется в зависимости от того, в каком режиме вы работаете: 32-битном или 64-битном.
Python в 32-битном режиме, уведомление sys.maxsize > 2**32
:
λ > arch -i386 python
Python 2.7.2 (default, Oct 31 2011, 00:51:07)
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.1.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.maxsize > 2**32
False
>>> sys.maxsize
2147483647
>>> import platform
>>> platform.architecture()
('64bit', '')
Python в 64-битном режиме:
λ > python
Python 2.7.2 (default, Oct 31 2011, 00:51:07)
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.1.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.maxsize
9223372036854775807
>>> sys.maxsize > 2**32
True
>>> import platform
>>> platform.architecture()
('64bit', '')