Принудительно использовать 32-битный питон - PullRequest
0 голосов
/ 31 октября 2011

У меня возникли проблемы с запуском 32-битного питона для моего macports python2.7

calvins-MacBook ttys003 Tue Nov 01 01:04:23 |~|
calvin$ arch -arch x86_64 python
Python 2.7.2 (default, Oct 31 2011, 20:10:35) 
[GCC 4.2.1 Compatible Apple Clang 3.0 (tags/Apple/clang-211.10.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform; platform.architecture()
('64bit', '')
>>> exit()
calvins-MacBook ttys003 Tue Nov 01 01:04:49 |~|
calvin$ arch -arch i386 python
Python 2.7.2 (default, Oct 31 2011, 20:10:35) 
[GCC 4.2.1 Compatible Apple Clang 3.0 (tags/Apple/clang-211.10.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform; platform.architecture()
('64bit', '')
>>> 

Как мне начать использовать 32-битный питон?

1 Ответ

3 голосов
/ 31 октября 2011
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', '')
...