Comment puis-je utiliser Homebrew pour installer Python 2 et 3 sur Mac?


146

J'ai besoin de pouvoir basculer entre Python 2 et 3. Comment faire cela en utilisant Homebrew car je ne veux pas jouer avec le chemin et avoir des ennuis. En ce moment, j'ai 2.7 installé via Homebrew.


Vous voudrez peut-être changer la question pour supprimer la référence homebrew car ce n'est pas nécessairement une exigence pour atteindre votre objectif (voir ma réponse ci-dessous par exemple stackoverflow.com/a/49091638/2923369 )
Matt Schlobohm

Réponses:


288

J'utiliserais pyenv Vous pouvez l'installer:

$ brew install pyenv

Pour activer pyenv dans votre shell Bash, vous devez exécuter:

$ eval "$(pyenv init -)"

Pour faire cela automatiquement pour Bash au démarrage, ajoutez cette ligne à votre fichier ~/.bash_profile. 1

Usage:

Une fois que vous avez installé pyenv et activé, vous pouvez installer différentes versions de python et choisir celle que vous pouvez utiliser. Exemple:

$ pyenv install 2.7.5

Vous pouvez vérifier les versions que vous avez installées avec:

$ pyenv versions

Et vous pouvez basculer entre les versions de python avec la commande:

$ pyenv global 3.3.1

Vous pouvez également définir une version python pour le répertoire actuel avec:

$ pyenv local 3.5.2

Vous pouvez vérifier en exécutant python --version:

$ python --version
Python 3.5.2

1 Homebrew vous demandait de le faire lors de l'installation de pyenv, mais le message a été supprimé . Pour Zsh et d'autres coquilles, les étapes précises peuvent être différentes.


C'est la solution la plus simple. J'utilise actuellement ceci pour basculer entre Python 3 et 2.7.x
Naz Mir

3
Si j'ai déjà installé python 2.7 via homebrew , y a-t-il quelque chose dont je devrais m'occuper en utilisant pyenv ? Puis-je installer un autre python 2.7 via pyenv ?
Drake Guan

3
Oui, vous pouvez installer un autre python 2.7 via pyenv. Il installera ce python dans $ PYENV_ROOT / versions. L'autre python 2.7 installé via homebrew peut apparaître comme "système" lorsque vous exécutez "pyenv versions".
moliware

5
J'ai dû ajouter eval "$(pyenv init -)"à mon .profile / .zshrc pour que pyenv fonctionne.
Rohmer

5
@ilciavo, vous devrez peut-être ajouter eval "$(pyenv init -)"à votre ~ / .bash_profile
Jojanzing

77

Vous pouvez installer les deux versions en même temps.

Pour Homebrew> = 1.5.0:

Depuis le 1er mars 2018, la pythonformule sera mise à niveau vers Python 3.x, tandis qu'une nouvelle python@2formule sera ajoutée pour Python 2.7, en particulier.

Voir l' annonce des modifications ici ou le document final sur l'utilisation de Homebrew pour Python ici .

Pour les Homebrew plus anciens:

Pour Python 2.x:

brew install python

Pour Python 3.x:

brew install python3

Maintenant, vous aurez les deux versions installées sur votre machine. Lorsque vous souhaitez utiliser la version 2, utilisez l' pythonexécutable. Lorsque vous souhaitez utiliser la version 3, utilisez l' python3exécutable.


la question porte sur l'utilisation des deux
meduz

Merci pour la mise à jour! J'ai suivi un itinéraire similaire mais j'ai eu des problèmes de devoir régler PYTHONPATHà chaque changement ... une idée? à part ça, pyenvc'est génial.
meduz

9
Notez également qu'en ayant python2 et python3 côte à côte, ce python pointe vers python2 et python3 pointe vers python3 comme prévu. Cependant, un gros problème est que pip ne pointe pas vers pip2 comme on pourrait s'y attendre. Il pointe en fait vers pip3 (comme le fait évidemment pip3). Pour utiliser pip2, utilisez explicitement pip2. Un peu incohérent d'avoir le suffixe non numérique pour python pointant sur 2 mais le suffixe non numérique pour pip pointe vers 3.
JD

5
Cela gâche les exécutables courants comme pip. python3 écrasera python2 pip dans ce cas et ce sera la commande par défaut "pip"
kissgyorgy

1
En réponse au commentaire de @ kissgyorgy: j'ai eu ce problème, le dernier commentaire sur ce problème l'a résolu pour moi github.com/Homebrew/legacy-homebrew/issues/50607 , courant python3 -m pip install -U --force-reinstall pippuis python -m pip install -U --force-reinstall pipremis les choses à se pipréférer à Python 2 pip.
Harry

11

Actuellement, Homebrew fournit deux formules différentes pour Python 2 et 3. brew install pythoninstalle python3 et brew install python@2installe python2. Plus de détails dans la documentation Homebrew:

https://docs.brew.sh/Homebrew-and-Python

Si vous avez actuellement installé 2.x via Homebrew, Homebrew vous donnera un message tel que:

Error: python 2.7.14 is already installed
To upgrade to 3.6.5, run `brew upgrade python`

Si vous exécutez:

brew upgrade python

vous devriez pouvoir faire:

python --version

et

python3 --version

Pour voir quelles versions de Python 2.x et 3.x sont installées.


6

Alternativement, vous pouvez probablement simplement entrer «python3» pour exécuter votre version la plus récente de python3.x et «python» ou «python2» pour exécuter la dernière version 2.x installée.


4

Il existe des moyens d'utiliser les deux, mais la solution la plus simple aujourd'hui est d'utiliser pyenv . pyenv permet de basculer facilement entre les versions. Voici ce que j'ai fait pour mettre en place:

ÉTAPE 1:

Supprimer tous les pythons de votre Mac

 brew uninstall --ignore-dependencies --force python
 sudo rm -rf ~/miniconda3/
 sudo rm -rf ~/.conda/

Supprimez les éléments suivants de ~/.bash_profile

export PATH="/Users/ishandutta2007/miniconda3/bin:$PATH"

et aussi ce qui suit de ~/.bashrc

export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH
export PYTHONPATH=/usr/local/lib/python2.7/site-packages/google:$PYTHONPATH
alias python="/usr/bin/python"

ÉTAPE 2 :

Installez pyenv et les versions de python dont vous avez besoin

brew update
brew install pyenv
pyenv install 2.7
pyenv install 3.7.0

ÉTAPE 3 :

ajouter pyenv inità bash_profileoubashrc

echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bash_profile

ÉTAPE 4 :

Vérifiez ce qui a été installé

pyenv versions
  • système (défini par /Users/ishandutta2007/.pyenv/version)

    2,7

    3.7.0

ÉTAPE 5:

Choisissez une valeur par défaut

pyenv global 3.7.0

Lorsqu'un projet a besoin d'une version plus ancienne, accédez simplement à son dossier racine et exécutez

pyenv local 2.7

1

Utilisez asdf !

Ballade d'Asdf

Il était une fois un langage de programmation
Il y avait de nombreuses versions de celui-ci
Donc les gens ont écrit un gestionnaire de version pour cela
Pour basculer entre les versions pour les projets
Différents, anciens, nouveaux.

Puis il y a eu plus de langages de programmation
Donc il y a eu plus de gestionnaires de versions
Et de nombreuses commandes pour eux

J'en ai installé beaucoup
j'ai appris beaucoup de commandes

Puis j'ai dit, juste un gestionnaire de version de plus
que j'écrirai à la place

Donc, il y a eu un autre gestionnaire de
version gestionnaire de version asdf - https://github.com/asdf-vm/asdf

Un gestionnaire de versions si extensible
pour lequel n'importe qui peut créer un plugin
Pour prendre en charge sa langue préférée
Plus besoin d'installer plus de gestionnaires de versions
Ou d'apprendre plus de commandes

https://github.com/asdf-vm/asdf
https://github.com/tuvistavie/asdf-python
https://github.com/asdf-vm/asdf-plugins


Il me semble que ce ne sont pas des outils concurrents mais le même outil, implémenté une fois (et parfois plus d'une fois) par langue. Un peu comme pourquoi nous avons besoin de quelque chose comme le LSP aussi, à mon humble avis. microsoft.github.io/language-server-protocol/overview
Matt Schlobohm

1

Je pensais avoir la même exigence - passer d'une version à l'autre de Python - mais j'ai réalisé tout ce dont j'avais besoin avec seulement Python3.6 en construisant à partir des sources au lieu d'utiliser homebrew.

git clone https://git.<theThingYouWantToInstall>

En fonction du dépôt, vérifiez s'il existe un fichier MAKE déjà configuré pour cette option.



-3

D'accord, j'avais du mal avec mon installation de brassage de Python3, car je n'avais pas pip3

sudo pip3 command not found

et ainsi j'ai fait

brew uninstall --force --ignore-dependencies python3

et installé le Python 3.6.2 régulier de la distribution officielle, puis j'ai eu pip3 et tous les composants étaient ok.


OP demande d'installer les deux.
Ajeet Ganga
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.