127 votes

Quelle est la manière la plus compatible d'installer des modules python sur un Mac ?

Je commence à apprendre Python et j'adore ça. Je travaille sur un Mac principalement ainsi que sur Linux. Je constate que sous Linux (Ubuntu 9.04 principalement), lorsque j'installe un module python à l'aide d'apt-get, cela fonctionne bien. Je peux l'importer sans problème.

Sur le Mac, j'ai l'habitude d'utiliser Macports pour installer tous les trucs Unixy. Cependant, je constate que la plupart des modules python que j'installe avec Macports ne sont pas vus par python. J'ai passé un certain temps à jouer avec les paramètres PATH et à utiliser python_select . Rien n'a vraiment fonctionné et à ce stade, je ne comprends pas vraiment, je ne fais que fouiller.

J'ai l'impression que Macports n'est pas universellement apprécié pour la gestion des modules python. J'aimerais repartir de zéro en utilisant une approche plus "acceptée" (si c'est le bon mot).

Je me demandais donc quelle était la méthode utilisée par les développeurs Mac Python pour gérer leurs modules.

Questions bonus :

Utilisez-vous le python d'Apple, ou une autre version ? Compilez-vous tout à partir des sources ou existe-t-il un gestionnaire de paquets qui fonctionne bien (Fink ?).

0 votes

Il y a quelques temps, Ars Technica a publié un article intéressant sur l'empaquetage d'applications PyQt pour Mac OS X : arstechnica.com/open-source/guides/2009/03/

7 votes

MacPorts est parfait pour Python sur le Mac. NOTE : vous devez installer les paquets Python via MacPorts pour qu'ils soient installés dans votre installation Python de MacPorts. Vous pouvez également installer des paquets sans utiliser MacPorts ; cependant, vous devez faire de cette version de python la version par défaut via python_select AVANT d'installer le paquet. Si vous installez le paquet et que vous utilisez ensuite python_select, cela ne fera aucune différence, car il sera installé dans la version de Python qui était la version par défaut au moment de l'installation.

145voto

sixthgear Points 3294

La façon la plus populaire de gérer les paquets python (si vous n'utilisez pas le gestionnaire de paquets de votre système) est d'utiliser setuptools et easy_install. Ces outils sont probablement déjà installés sur votre système. Utilisez-le comme ceci :

easy_install django

easy_install utilise le Index des paquets Python qui est une ressource étonnante pour les développeurs python. Jetez un coup d'œil pour voir quels paquets sont disponibles.

Une meilleure option est pip qui gagne en popularité, car elle tente de régler un grand nombre de problèmes associé à easy_install. Pip utilise le même dépôt de paquets que easy_install, mais il fonctionne mieux. La seule fois où vous avez besoin d'utiliser easy_install est pour cette commande :

easy_install pip

Après cela, utilisez :

pip install django

A un moment donné, vous voudrez probablement en savoir un peu plus sur virtualenv . Si vous développez beaucoup de python sur des projets dont les exigences en matière de paquets sont contradictoires, virtualenv est une aubaine. Il vous permettra d'avoir des versions complètement différentes de divers paquets, et de passer facilement de l'une à l'autre en fonction de vos besoins.

En ce qui concerne le choix de python à utiliser, rester avec le python d'Apple vous donnera le moins de maux de tête, mais si vous avez besoin d'une version plus récente (Leopard est 2.5.1 je crois), j'opterais pour l'option macports python 2.6.

5 votes

J'ai récemment reconstruit ma machine et je suis passé à l'utilisation exclusive de Homebrew et de PIP, et soudain tous les problèmes de construction que j'avais ont disparu.

42voto

SystematicFrank Points 3014

Votre question date déjà de trois ans et certains détails ne sont pas abordés dans les autres réponses :

La plupart des gens que je connais utilisent HomeBrew o MacPorts Je préfère MacPorts en raison de sa coupe nette de ce qui est un environnement Mac OS X par défaut et de ma configuration de développement. Déplacez simplement votre /opt et testez vos paquets avec un environnement Python d'utilisateur normal.

MacPorts n'est portable que sur Mac, mais avec easy_install ou pip vous apprendrez à configurer votre environnement sur n'importe quelle plateforme (Win/Mac/Linux/Bsd...). De plus, il sera toujours plus à jour et avec plus de paquets.

Personnellement, je laisse MacPorts gérer mes modules Python pour que tout soit à jour. Comme n'importe quel autre gestionnaire de paquets de haut niveau (ex : apt-get), il est bien meilleur pour les gros travaux de modules avec beaucoup de dépendances binaires. Il n'y a aucune chance que je construise mes liaisons Qt (PySide) avec easy_install ou pip. Qt est énorme et prend beaucoup de temps à compiler. Dès que vous voulez un paquet Python qui a besoin d'une bibliothèque utilisée par des programmes non Python, essayez d'éviter easy_install ou pip.

À un moment donné, vous constaterez qu'il manque certains paquets dans MacPorts. Je ne pense pas que MacPorts vous donnera un jour l'ensemble des paquets de la CheeseShop . Par exemple, j'ai récemment eu besoin de la Élixir mais MacPorts ne propose que py25-elixir et py26-elixir, pas de version py27. Dans des cas comme celui-ci, vous avez :

pip-2.7 install --user elixir

( assurez-vous de toujours taper pip-(version) )

Cela va créer une bibliothèque Python supplémentaire dans votre répertoire personnel. Oui, Python fonctionnera avec plus d'un emplacement de bibliothèque : un contrôlé par MacPorts et un local utilisateur pour tout ce qui manque dans MacPorts.

Maintenant, remarquez que je préfère pip à easy_install. Il y a une bonne raison pour laquelle vous devriez éviter setuptools et easy_install. Voici une bonne explication et j'essaie de m'en éloigner. Une fonctionnalité très utile de pip est de vous donner une liste de tous les modules (avec leurs versions) que vous avez installés avec MacPorts, easy_install et pip lui-même :

gel de pip-2.7

Si vous avez déjà commencé à utiliser easy_install, ne vous inquiétez pas, pip peut reconnaître tout ce qui a déjà été fait par easy_install et même mettre à jour les paquets installés avec lui.

Si vous êtes un développeur, gardez un œil sur virtualenv pour contrôler différentes configurations et combinaisons de versions de modules. D'autres réponses le mentionnent déjà, ce qui n'est pas mentionné jusqu'à présent, c'est le Tox un outil permettant de vérifier que votre paquet s'installe correctement avec différentes versions de Python.

Bien que je n'aie généralement pas de conflits de versions, j'aime avoir virtualenv pour mettre en place un environnement propre et avoir une vue claire des dépendances de mes paquets. De cette façon, je n'oublie jamais aucune dépendance dans mon setup.py.

Si vous optez pour MacPorts, sachez que les versions multiples d'un même paquet ne sont plus sélectionnées comme dans l'ancien style Debian avec un paquet python_select supplémentaire (il est toujours là pour la compatibilité). Vous disposez maintenant de la commande select pour choisir la version de Python qui sera utilisée (vous pouvez même sélectionner les versions installées par Apple) :

$  port select python
Available versions for python:
    none
    python25-apple
    python26-apple
    python27 (active)
    python27-apple
    python32

$ port select python python32

Ajoutez-y la tox et vos programmes devraient être vraiment portables.

30voto

Michael Aaron Safyan Points 45071

Veuillez consulter Environnement de développement Python OS X . Le meilleur moyen est d'utiliser MacPorts . Téléchargez et installez MacPorts, puis installez Python via MacPorts en tapant les commandes suivantes dans le Terminal :

sudo port install python26 python\_select
sudo port select --set python python26

OU

sudo port install python30 python\_select
sudo port select --set python python30

Utilisez le premier ensemble de commandes pour installer Python 2.6 et le second ensemble pour installer Python 3.0. Puis utilisez :

sudo port install py26-packagename

OU

sudo port install py30-packagename

Dans les commandes ci-dessus, remplacez nom du paquet avec le nom du paquet, par exemple :

sudo port install py26-setuptools

Ces commandes installeront automatiquement le paquetage (et ses dépendances) pour la version de Python donnée.

Pour obtenir une liste complète des paquets disponibles pour Python, tapez :

port list | grep py26-

OU

port list | grep py30-

La commande que vous utilisez dépend de la version de Python que vous avez choisi d'installer.

1 votes

Pour mémoire, dans les versions récentes de MacPorts sudo python_select python30 a été remplacé par sudo port select --set python python30 .

6voto

Ned Deily Points 40248

Il n'y a rien de mal à utiliser une installation Python de MacPorts. Si vous installez des modules python depuis MacPorts mais que vous ne les voyez pas, cela signifie probablement que vous n'invoquez pas le python MacPorts que vous avez installé. Dans un shell terminal, vous pouvez utiliser des chemins absolus pour invoquer les différents Python qui peuvent être installés. Par exemple :

$ /usr/bin/python2.5         # Apple-supplied 2.5 (Leopard)
$ /opt/local/bin/python2.5   # MacPorts 2.5
$ /opt/local/bin/python2.6   # MacPorts 2.6
$ /usr/local/bin/python2.6   # python.org (MacPython) 2.6
$ /usr/local/bin/python3.1   # python.org (MacPython) 3.1

Pour obtenir le bon python par défaut, il faut s'assurer que le $PATH de votre shell est correctement configuré pour garantir que le bon exécutable est trouvé en premier. Une autre solution consiste à définir des alias shell pour les différents pythons.

Une installation de python.org (MacPython) convient également, comme d'autres l'ont suggéré. easy_install peut aider mais, encore une fois, parce que chaque instance de Python peut avoir ses propres easy_install assurez-vous que vous invoquez la bonne commande easy_install .

2 votes

S'il utilise MacPorts, la manière correcte de faire de cette version de Python la version par défaut n'est pas de jouer avec le PATH, mais d'installer "python_select" et de le laisser commuter automatiquement les liens symboliques nécessaires pour faire de cette version de Python la version par défaut.

3 votes

Python_select ne gère que les liens symboliques python dans /opt/local/bin et il n'y a aucune garantie que /opt/local/bin précède /usr/local/bin ou /usr/bin dans votre $PATH (bien que l'installation initiale de MacPorts tente de le faire). Le fait est qu'avec les multiples versions disponibles, l'utilisation de "python" ou même de "python2.5" est un peu aléatoire en général : vous ne savez pas quel Python vous allez trouver à moins d'être conscient des pièges de $PATH et/ou d'utiliser des chemins absolus.

6voto

Tudorizer Points 2647

Si vous utilisez Python de MacPorts, il a sa propre installation facile à l'adresse suivante : /opt/local/bin/easy_install-2.6 (pour py26, bien sûr). Ce n'est pas la même chose que de simplement appeler easy_install directement, même si vous avez utilisé python_select pour changer votre commande python par défaut.

1 votes

Idem pour pip. Avec mon installation MacPorts, j'utilise pip-2.6 (qui est dans /opt/local/bin/) pour installer les modules python qui sont compatibles avec le python de MacPorts. Vous pouvez sudo port install py2.6-pip pour obtenir de la tuyauterie.

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