36 votes

Comment forcer Python à utiliser 32 bits sur Snow Leopard et d'autres questions 32 bits / 64 bits

Lorsque j'exécute les opérations suivantes à partir d'un shell bash sur mon Mac:

$ file /usr/bin/python

Je reçois les trois lignes suivantes:

/usr/bin/python (for architecture x86_64):  Mach-O 64-bit executable x86_64
/usr/bin/python (for architecture i386):    Mach-O executable i386
/usr/bin/python (for architecture ppc7400): Mach-O executable ppc

cela semble indiquer que Python a été compilé pour les trois architectures ou quelque chose comme ça? Je crois, basée sur quelques erreurs que j'ai eu lors de la tentative d'installation de MySQL, que la version que j'utilise est la version 64 bits. Donc deux questions:

  1. Comment j'ai connu ça?

  2. Comment pourrais-je changer Python 32 bits à la place? Quelque chose de moins radical que de la re-compiler avec différents compiler les paramètres?

  3. Pourquoi est - arch partir d'un shell bash retour i386 , ce qui semblerait indiquer que je ne suis pas en "mode 64 bits" quand je sais basé sur mon processeur, je suis sur un Mac 64 bits?

Désolé ce sont probablement toutes les questions de newbie, l'ensemble de la 32/64-bit chose, c'est frustrant la merde hors de moi et je suis sûr qu'il ya des commandes et des outils qui permettrait de rendre cela plus facile.

30voto

Alex Martelli Points 330805
  1. Vous pouvez trouver beaucoup d'information à propos de la version de Python que vous êtes en cours d'exécution via l' platform module sys module a aussi quelques simples aides)

  2. Sur Mac OS X, vous pouvez exécuter un "gros binaire" avec votre choix de l'architecture avec, par exemple,

    arc -i386 /usr/bin/python

Je n'ai pas recommander de modifier le fichier /usr/lib/python lui-même (avec l' lipo de la commande) -- vous pouvez facilement rendre votre système inutilisable par l'altération du système de fichiers. Peut-être l'installation d'un distinct Python à partir de python.org (pour les applications), tout en laissant le système de Python seul est acceptable stratégie pour vous -- c'est certainement plus sûr que de modifier les fichiers système!-)

Quant à votre troisième question, hmmm, c'est une stumper pour moi -- et certainement une question pour superuser.com (ainsi que complètement sans rapport avec Python, il semble aussi complètement étrangers à la programmation;-).

24voto

danielrsmith Points 2337

http://www.jaharmi.com/2009/08/29/python_32_bit_execution_on_snow_leopard

$ defaults write com.apple.versioner.python Prefer-32-Bit -bool yes

19voto

cogg Points 291

Correctif à utiliser avec virtualenv sur Snow Leopard

La réponse de danielrsmith fonctionne pour moi lorsque je n'utilise pas virtualenv, mais virtualenv crée une copie de l'exécutable python, ce qui l'empêche de fonctionner:

 $ which python
/Users/cogg/.virtualenvs/tweakeats/bin/python

$ python
[...]
>>> import sys
>>> sys.maxint
9223372036854775807
 

comme il s’agit d’une copie de python, j’ai utilisé lipo pour supprimer l’architecture 64 bits. Cela me permet d’utiliser python 2.6 32 bits avec virtualenv:

 $ lipo -info /Users/cogg/.virtualenvs/tweakeats/bin/python
Architectures in the fat file: /Users/cogg/.virtualenvs/tweakeats/bin/python are: x86_64 i386 ppc7400
$ mv /Users/cogg/.virtualenvs/tweakeats/bin/python /Users/cogg/.virtualenvs/tweakeats/bin/python.old
$ lipo -remove x86_64 /Users/cogg/.virtualenvs/tweakeats/bin/python.old -output /Users/cogg/.virtualenvs/tweakeats/bin/python
$ python
[...]
>>> import sys
>>> sys.maxint
2147483647
 

6voto

Sumod Points 907

La réponse a été acceptée. Mais je pense que la 3ème question est toujours sans réponse. J'ai trouvé que c'est une question intéressante et donc fait quelques recherches pour la même chose. Voici la réponse que j'ai trouvé dans un autre forum DONC -

SnowLeopard s'exécute système 32 bits des logiciels et des applications sur 32 bits Intel machines, et 64-bit du logiciel système et 32-bits et 64-bits sur 64 bits Intel machines. La version de bureau de Snow Leopard bottes un noyau 32 bits pour des raisons de kext et de compatibilité de pilote, mais tous les utilisateurs de l'espace fonctionne en 64 bits. Mac OS X Server démarre dans un noyau 64 bits. Core 2 Duo est une machine 64 bits. Essayez $ sysctl hw.cpu64bit_capable ou sysctl hw.facultatif.x86_64 pour vérifier que vous avez un processeur 64 bits. arche sera toujours montrer i386 sur Intel dans les deux Leopard et Snow Leopard. – cdespinosa Sep 22 '09 à 4:23

Original link - Mac OSX 10.6 compilateur: une expérience déroutante avec 32 vs 64 bits

0voto

hackg Points 16

la troisième question a à voir avec l'32 / 64 bits de noyau

juste parce que vous avez une version 64 bits de l'OS et 64 bits processeur ne signifie pas que vous êtes le démarrage d'une version 64 bits de noyau de Mac OSX

Si vous avez un Mac avec 10.6 snow leopard à l'usine, puis il a expédié en 32 bits par défaut, le mode

vous devez modifier le réglage du système de démarrage mode 64 bits

(pas sûr sur les changements à 10.7 ou 10.8 comme la dernière que j'utilise est de la neige leo, mais je crois qu'ils peuvent démarrer en 64 bits noyau par défaut de l'usine)

10.6 - depuis le terminal, exécutez la commande:

 :*sudo nvram boot-args="arch=x86_64"

OU

10.6 - depuis le terminal, exécutez la commande:

sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.Boot 'Kernel Flags' 'arch=x86_64'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X