web-dev-qa-db-fra.com

Quel est le moyen le plus compatible d’installer des modules python sur un Mac?

Je commence à apprendre le python et à l'aimer. Je travaille sur un Mac principalement, ainsi que sur Linux. Je trouve cela sous Linux (Ubuntu 9.04 principalement) lorsque j'installe un module python avec apt-get, cela fonctionne bien. Je peux l'importer sans problème.

Sur Mac, je suis habitué à utiliser Macports pour installer tous les logiciels Unixy. Cependant, je constate que la plupart des modules python que j'installe avec ne sont pas vus par python. J'ai passé du 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 fouille simplement.

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

Alors, je me demandais, quelle est 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 depuis le source ou existe-t-il un gestionnaire de paquetages qui fonctionne bien (Fink?).

123
GloryFish

Le moyen le plus utilisé pour gérer les packages Python (si vous n'utilisez pas votre gestionnaire de packages système) consiste à utiliser setuptools et easy_install. Il est probablement déjà installé sur votre système. Utilisez-le comme ceci:

easy_install Django

easy_install utilise le Python Package Index , qui est une ressource incroyable pour les développeurs python. Regardez autour de vous pour voir quels forfaits sont disponibles.

Une meilleure option est pip , qui gagne du terrain, car il tente de résoudre beaucoup de problèmes } associé à easy_install. Pip utilise le même référentiel de packages que easy_install, cela fonctionne mieux. En réalité, le seul besoin d'utiliser easy_install est pour cette commande:

easy_install pip

Après cela, utilisez:

pip install Django

À un moment donné, vous voudrez probablement en savoir un peu plus sur virtualenv . Si vous effectuez beaucoup de développement python sur des projets dont les exigences en matière de paquetages sont conflictuelles, virtualenv est une aubaine. Il vous permettra d’avoir des versions complètement différentes de divers packages et de basculer facilement d’une version à l’autre en fonction de vos besoins.

En ce qui concerne le python à utiliser, rester avec le python d’Apple vous causera 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’irais avec le macports python 2.6.

142
sixthgear

Votre question a déjà 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 ou MacPorts , je préfère MacPorts en raison de sa coupe précise de ce qui est un environnement Mac OS X par défaut et de ma configuration de développement. Déplacez simplement votre dossier / opt et testez vos paquets avec un environnement Python d'utilisateur normal

MacPorts est uniquement portable sur Mac, mais avec easy_install ou pip, vous apprendrez à configurer votre environnement sur n’importe quelle plate-forme (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 reste à jour. Comme n'importe quel autre gestionnaire de paquets de haut niveau (c'est-à-dire: apt-get), il est bien meilleur pour lever des modules avec beaucoup de dépendances binaires. Il est impossible que je construise mes liaisons Qt (PySide) avec easy_install ou pip. Qt est énorme et prend beaucoup à compiler. Dès que vous voulez un paquet Python nécessitant 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 des packages dans MacPorts. Je ne crois pas que MacPorts vous donnera jamais le tout CheeseShop . Par exemple, récemment, j'avais besoin du module Elixir , mais MacPorts ne propose que py25-elixir et py26-elixir, pas de version py27. Dans de tels cas, vous avez:

pip-2.7 install --user l'élixir

(assurez-vous que vous tapez toujours pip- (version))

Cela construira une bibliothèque supplémentaire Python dans votre répertoire personnel. Oui, Python fonctionnera avec plusieurs emplacements de bibliothèque: un contrôlé par MacPorts et un utilisateur local pour tout ce qui manque dans MacPorts.

Maintenant, remarquez que je préfère pip à easy_install. Il y a une bonne raison pour que vous évitiez setuptools et easy_install. Voici une bonne explication et j'essaie de m'éloigner d'eux. 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 est déjà fait par easy_install et même mettre à niveau les packages installés avec celui-ci.

Si vous êtes développeur, surveillez 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 module Tox , un outil permettant de tester que votre paquet s'installe correctement avec différentes versions de Python.

Bien que je n’ai généralement pas de conflit de version, j’aime avoir virtualenv pour configurer un environnement propre et obtenir 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 plusieurs versions du même paquet ne sont plus sélectionnées comme l'ancien style Debian avec un paquet supplémentaire python_select (il est toujours là pour la compatibilité). Maintenant vous avez la commande select pour choisir quelle version de Python sera utilisée (vous pouvez même sélectionner celle installée 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 tox et vos programmes devraient être vraiment portables

42
SystematicFrank

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:

 Le port Sudo installe python26 python_select 
 Le port Sudo sélectionne --set python python26 

OR

 Le port Sudo installe python30 python_select 
 Le port Sudo sélectionne --set python python30 

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

 Le port de Sudo installe py26-packagename 

OR

 Sudo install install py30-packagename 

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

 Le port Sudo installe py26-setuptools 

Ces commandes vont automatiquement installer le paquet (et ses dépendances) pour la version donnée de Python.

Pour obtenir la liste complète des packages disponibles pour Python, tapez:

 liste de ports | grep py26 -

OR

 liste de ports | grep py30 -

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

30

J'utilise MacPorts pour installer Python et tous les modules tiers suivis par MacPorts dans /opt/local, et j'installe les modules installés manuellement (ceux ne figurant pas dans le référentiel MacPorts) dans /usr/local, ce qui n'a jamais posé de problèmes. Je pense que vous pouvez être confus quant à l'utilisation de certains scripts MacPorts et de certaines variables d'environnement.

MacPorts python_select est utilisé pour sélectionner la version "actuelle" de Python, mais cela n’a rien à voir avec les modules. Cela vous permet, par exemple, d'installer Python 2.5 et Python 2.6 à l'aide de MacPorts, et de basculer entre les installations.

Les variables d'environnement $PATH n'affectent pas pas les types de modules Python chargés. $PYTHONPATH est ce que vous recherchez. $PYTHONPATH devrait pointer vers les répertoires contenant les modules Python que vous voulez charger. Dans mon cas, ma variable $PYTHONPATH contient /usr/local/lib/python26/site-packages. Si vous utilisez Python de MacPorts, il configure les autres répertoires appropriés pour vous. Vous n'avez donc qu'à ajouter additional path à $PYTHONPATH. Mais encore une fois, $PATH n'est pas utilisé du tout lorsque Python recherche les modules que vous avez installés.

$PATH est est utilisé pour trouver les exécutables. Ainsi, si vous installez Python de MacPorts, assurez-vous que /opt/local/bin figure bien dans votre $PATH.

7
mipadi

Si vous utilisez Python à partir de MacPorts, easy_install est situé à l’adresse suivante: /opt/local/bin/easy_install-2.6 (pour py26, c’est-à-dire). Ce n'est pas la même chose que d'appeler simplement easy_install directement, même si vous avez utilisé python_select pour changer votre commande python par défaut.

6
Tudor

Il n'y a rien de mal à utiliser une installation MacPorts Python. Si vous installez des modules Python à partir de MacPorts mais ne les voyez pas, cela signifie probablement que vous n'appelez pas le python MacPorts que vous avez installé. Dans un terminal Shell, vous pouvez utiliser des chemins absolus pour appeler les différents Pythons pouvant ê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, vous devez vous assurer que votre Shell $ PATH est correctement défini pour que le bon fichier exécutable soit trouvé en premier. Une autre solution consiste à définir des alias de 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, étant donné que chaque instance Python peut avoir sa propre commande easy_install, assurez-vous d’appeler le bon easy_install.

6
Ned Deily

Avez-vous regardé dans easy_install du tout? Il ne synchronisera pas vos macports ni quoi que ce soit d'autre, mais il téléchargera automatiquement le dernier paquet et toutes les dépendances nécessaires, c'est-à-dire.

easy_install nose

pour le paquet de test du nez, ou

easy_install trac

pour le traqueur de bogues trac.

Il y a un peu plus d'informations sur leur page EasyInstall aussi.

4
Mark Rushakoff

Pour les installations MacPython, j'ai trouvé une solution efficace pour résoudre le problème avec setuptools (easy_install) dans cet article de blog:

http://droidism.com/getting-running-with-Django-and-macpython-26-on-leopard

Une astuce pratique consiste à déterminer quelle version de python est active dans le terminal:

which python
3
Edmundito

Lorsque vous installez des modules avec MacPorts, cela n’entre pas dans la version Apple de Python. Au lieu de cela, ces modules sont installés sur la version MacPorts de Python sélectionnée.

Vous pouvez changer la version de Python utilisée par défaut en utilisant un port mac appelé python_select . instructions ici .

De plus, il y a easy_install . Qui utilisera python pour installer des modules python. 

2
Jon W

En ce qui concerne la version de python à utiliser, Mac OS fournit généralement une ancienne version de python. C'est une bonne idée de passer à une version plus récente. Vous pouvez télécharger un fichier .dmg à partir de http://www.python.org/download/ . Si vous faites cela, n'oubliez pas de mettre à jour le chemin. Vous pouvez trouver les commandes exactes ici http://farmdev.com/ Thoughts/66/python-3-0-on-mac-os-x-alongside-2-6-2-5-etc-/

1
Mario F

Vous avez peut-être déjà pip3 pré-installé, alors essayez-le!

0
SHi ON