2010-01-21 7 views
6

Je veux juste construire ceci sur mon ordinateur de développement - l'installation binaire de Python.org est toujours en 32 bits et en installant des extensions (MySQLdb, par exemple) me rend fou d'essayer de trouver les bons drapeaux pour chaque extension.Comment compiler Python 64 bits sur OS X 10.6 - SEULEMENT 64 bits, pas de non-sens universel

Précision: Je ne remplaçaient pas le Python système, je viens d'installer le binaire Python.org dans sa place normale dans/Bibliothèque/..., pas/System/Library/....

Tout le reste semble construire 64 bits par défaut, et le Python 2.6.1 par défaut était 64 bits (avant de le remplacer par la construction Python.org en supposant que c'était un remplacement direct) `

Je veux juste une version 64 bits seulement fonctionnera sur ma seule machine sans aucun croupion.

Est-ce que quelqu'un a une réponse simple?

Merci beaucoup, [email protected]

Répondre

11

Si vous arrive d'utiliser MacPorts, il est aussi simple que spécifiant la variante qui lui indique de ne pas compiler Universal, comme ceci:

sudo port install python26 -universal 

Vous peuvent voir les variantes disponibles en utilisant la commande variants:

% port variants python26               
python26 has the variants: 
    darwin: Platform variant, selected automatically 
    no_tkinter: Disable Tkinter support, which will break IDLE 
    ucs4: Enable support for UCS4 
    universal: Build for multiple architectures 

Comme vous pouvez le voir, par défaut sur 10.6, il construit le darwin variante, qui construit seulement x86_64:

% cd /opt/local/Library/Frameworks/Python.framework/Versions/2.6/bin/ 
% file python2.6 
python2.6: Mach-O 64-bit executable x86_64 

Comparer par défaut binaire python, qui est universel:

% file /usr/bin/python 
/usr/bin/python: Mach-O universal binary with 3 architectures 
/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 

Si vous ne l'utilisez MacPorts, je vous suggère de l'examiner. Cela permet d'économiser beaucoup de temps et de chagrin d'avoir à configurer et compiler manuellement tout, et il existe une excellente interface graphique appelée Porticus. Tous gratuits et open source, bien sûr!

p.s. Jamais remplacez ou renommez les binaires système d'origine! Comme suggéré dans les commentaires de Ned Daily:

« Soit gérer l'accès à l'intention exemple python en changeant l'ordre de recherche dans la variable d'environnement PATH ou, le cas échéant, utiliser un chemin absolu comme/opt /local/bin/python2.6 ".

+0

On dirait que -universal flag * devrait * compiler "Universal" --- si c'est le cas, vous voudrez peut-être modifier la première ligne. – telliott99

+0

Merci! J'ai eu un couple de systèmes OS X tôt mutilé complètement avec les versions antérieures de Fink et de MacPorts et j'ai hésité depuis lors. Je commence à me sentir comme OS X est comme une femme belle mais très haute maintenance; agréable de regarder et de jouer avec, mais quand il y a du travail à faire, plus d'un obstacle que d'une aide. – ssteinerX

+0

@ telliot99 On spécifierait '+ universal 'pour l'inclure,' -universal' l'exclurait. Cependant, il est exclu par défaut, sur 10.6, ce serait donc superflue. – jathanism

5

La solution la plus simple est de tirer tout dont vous avez besoin de MacPorts:

$ sudo port selfupdate 
$ sudo port install python26 +no_tkinter -universal py26-mysqldb -universal 

qui installera python2.6, l'adaptateur MySQLdb et les bibliothèques clientes MySQL nécessaires. Je suggère d'ajouter le variant no_tkinter sauf si vous avez vraiment besoin de tkinter; il y avait quelques problèmes avec la version MacPorts de Tk sur 10.6.

EDIT: Notez que le MacPorts Python sera installé en tant que /opt/local/bin/python2.6. Vous devrez peut-être ajuster votre shell $ PATH pour vous assurer que/opt/local/bin est dessus avant/usr/local/bin et/usr/bin.Si vous voulez/opt/local/bin/python pour se référer à la python2.6 MacPorts, procédez comme ci-dessus et:

$ sudo port install python_select 
$ sudo python_select python26 
+0

J'ai installé MacPorts, et Python et mysqldb et sacrément si je n'ai pas la même erreur de flippin, je commençais à essayer de le construire moi-même. django.core.exceptions.ImproperlyConfigured: Erreur lors du chargement du module MySQLdb: le module dynamique ne définit pas la fonction init (init_mysql) Merci pour l'aide de toute façon, maintenant ... comment désinstaller MacPorts? – ssteinerX

+0

Je pense que j'ai un système très, très embrouillé. Certaines parties viennent correctement du virtualenv que j'ai créé, d'autres parties venant de l'installation de Python.org, yikes. Tout semble très familier de mes expériences précédentes avec MacPorts et Fink. On dirait que je devrais désinstaller complètement les sources précédentes/Python.org, y compris MySQL. Oh mec. – ssteinerX

+0

Etes-vous sûr que votre instance Django utilise MacPorts Python2.6? Si vous aviez mentionné Django, je vous aurais aussi suggéré de le faire depuis MacPorts: 'sudo port install py26-django'. Même chose pour py26-virtualenv ou d'autres paquets. Fonctionne pour moi en cours d'exécution Django en mode serveur de développement. Si vous essayez d'exécuter ceci sous Apache, cela devient plus compliqué. –

3

Une fois que vous obtenez la configuration de Python 64 bits en utilisant les méthodes décrites ci-dessus ci-dessus, j'ai aussi trouvé ce blog post by Aaron Meurer utile pour vérifier que Python est en fait installé en 64 bits. La publication parle également de l'exécution de Python 64 bits parallèlement à une installation 32 bits, ce qui est utile à certaines fins.

5

Toujours macports ... sheesh

Voici ce que je faisais:

~: wget http://python.org/ftp/python/2.6.5/Python-2.6.5.tar.bz2 
~: tar xjf Python-2.6.5.tar.bz2 
~: cd Python-2.6.5 
~: ./configure ./configure MACOSX_DEPLOYMENT_TARGET=10.6 --enable-framework --with-universal-archs="64-bit" CFLAGS="-arch x86_64" LDFLAGS="-arch x86_64" 
~: make -j6 
~: sudo make install 

peut-être un peu redondant sur les choses FLAGS, mais cela a fonctionné.

+0

Intéressant. Pour moi, comme je m'y attendais, l'étape de configuration explose avec les paramètres de votre exemple. En fait, vous n'avez pas besoin des FLAGS ou '--with-universal-archs' quand vous construisez sur un système 10.6 64 bits. Mais une fois arrivé à la fin, vous constaterez probablement qu'un ou plusieurs modules de bibliothèque standard ne sont pas compilés correctement, comme '_tkinter' ou' _curses_panel' ou autre chose. Leur absence n'est peut-être pas la fin du monde pour votre usage, mais c'est * l'une des raisons pour lesquelles je recommande d'utiliser un programme d'installation binaire ou un gestionnaire de paquets, comme MacPorts: pour obtenir les petits détails. –

+0

Ahhh je vois. Eh bien, je n'ai pas eu de problème avec _curses_panel, mais c'est probablement parce que je le construis moi aussi. Et je n'ai jamais eu besoin de moi non plus. – rossipedia

Questions connexes