Comment puis-je installer une version précédente de Python 3 dans macOS à l'aide de Brew?
Avec la commande brew install python
j'ai la dernière version de Python 3 (actuellement v3.7.0), mais je veux la dernière version de Python 3.6 (actuellement 3.6.5) .
J'ai lu sur un autre paquet pyenv
qui peut aider à gérer différentes installations de python, mais cette solution ne me convient pas.
Pour effectuer une nouvelle installation de Python 3.6.5, utilisez:
brew unlink python # ONLY if you have installed (with brew) another version of python 3
brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb
Si vous préférez récupérer une version précédemment installée, alors:
brew info python # To see what you have previously installed
brew switch python 3.x.x_x # Ex. 3.6.5_1
Il existe deux formules pour installer Python avec Homebrew: python@2
et python
.
Le premier est pour Python 2 et le second pour Python 3.
Remarque: Vous pouvez trouver des réponses obsolètes sur le Web où il est mentionné python3
comme nom de formule pour l'installation de Python version 3. Maintenant, c'est juste python
!
Par défaut, avec ces formules, vous pouvez installer la dernière version de la version majeure correspondante de Python. Vous ne pouvez donc pas installer directement une version mineure telle que 3.6.
Avec brew
, vous pouvez installer un paquet en utilisant l'adresse de la formule, par exemple dans un référentiel git.
brew install https://the/address/to/the/formula/FORMULA_NAME.rb
Ou spécifiquement pour Python 3
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/COMMIT_IDENTIFIER/Formula/python.rb
L'adresse que vous devez spécifier est l'adresse du dernier commit de la formule (python.rb) pour la version souhaitée. Vous pouvez trouver l'identifiant de commande en consultant l'historique de homebrew-core/Formula/python.rb
https://github.com/Homebrew/homebrew-core/commits/master/Formula/python.rb
Dans le lien ci-dessus, vous ne trouverez pas de formule pour une version de Python supérieure à 3.6.5. Une fois que les responsables de ce référentiel (officiel) ont publié Python 3.7, ils ne soumettent que les mises à jour de la recette de Python 3.7.
Comme expliqué ci-dessus, avec homebrew, vous n'avez que Python 2 (python @ 2) et Python 3 (python), . Il n'existe pas de formule explicite pour Python 3.6 .
Bien que ces mises à jour mineures ne soient généralement pas pertinentes dans la plupart des cas et pour la plupart des utilisateurs, je vais rechercher si quelqu'un a déjà utilisé une formule explicite pour 3.6.
Comme une mise à jour, lorsque vous faites
brew unlink python # If you have installed (with brew) another version of python
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb
Vous pouvez rencontrer
Error: python contains a recursive dependency on itself:
python depends on sphinx-doc
sphinx-doc depends on python
Pour le contourner, ajoutez l'argument --ignore-dependencies
à installer.
brew unlink python # If you have installed (with brew) another version of python
brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb
Ce que j'ai fait, c'est d'abord que j'ai installé python 3.7.
brew install python3
brew unlink python
alors j'ai installé python 3.6.5 en utilisant le lien ci-dessus
brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb --ignore-dependencies
Après cela, j'ai lancé brew link --overwrite python
. Maintenant, j'ai tous les pythons dans le système pour créer les environnements virtuels.
mian@tdowrick2~ $ python --version
Python 2.7.10
mian@tdowrick2~ $ python3.7 --version
Python 3.7.1
mian@tdowrick2~ $ python3.6 --version
Python 3.6.5
Pour créer Python 3.7 environnement virtuel.
mian@tdowrick2~ $ virtualenv -p python3.7 env
Already using interpreter /Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7
Using base prefix '/Library/Frameworks/Python.framework/Versions/3.7'
New python executable in /Users/mian/env/bin/python3.7
Also creating executable in /Users/mian/env/bin/python
Installing setuptools, pip, wheel...
done.
mian@tdowrick2~ $ source env/bin/activate
(env) mian@tdowrick2~ $ python --version
Python 3.7.1
(env) mian@tdowrick2~ $ deactivate
Pour créer un environnement virtuel Python 3.6
mian@tdowrick2~ $ virtualenv -p python3.6 env
Running virtualenv with interpreter /usr/local/bin/python3.6
Using base prefix '/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6'
New python executable in /Users/mian/env/bin/python3.6
Not overwriting existing python script /Users/mian/env/bin/python (you must use /Users/mian/env/bin/python3.6)
Installing setuptools, pip, wheel...
done.
mian@tdowrick2~ $ source env/bin/activate
(env) mian@tdowrick2~ $ python --version
Python 3.6.5
(env) mian@tdowrick2~ $
J'ai essayé toutes les réponses ci-dessus pour installer Python 3.4.4. L'installation de python a fonctionné, mais PIP ne serait pas installé et je ne pouvais rien faire pour le faire fonctionner. J'utilisais Mac OSX Mojave, qui pose quelques problèmes avec zlib, openssl.
Ce qu'il ne faut pas faire:
Solution:
p.s: Vous n'avez pas besoin de désinstaller votre autre version de Python sur votre système.
Modifier:
J'ai trouvé une solution bien meilleure qui fonctionne sous MacOSX, Windows, Linux, etc.
conda init
conda create -n [NameOfYour VirtualEnvironment] python=3.4.4
conda info --envs
conda activate [The name of your virtual environment that was shown with the command at step 5]
Pour résoudre ce problème avec homebrew
, vous pouvez temporairement antidater homebrew-core
et définir la variable HOMEBREW_NO_AUTO_UPDATE
pour la maintenir en place:
cd `brew --repo homebrew/core`
git checkout f2a764ef944b1080be64bd88dca9a1d80130c558
export HOMEBREW_NO_AUTO_UPDATE=1
brew install python
Je ne recommande pas de donner un antidatage permanent à l'homebrew-core, car vous manquerez de correctifs de sécurité, mais cela s'avère utile à des fins de test.
Vous pouvez également extraire d'anciennes versions de formules homebrew dans votre propre tap (propriétaire_ tap/nom_ tap) à l'aide de la commande brew extract
:
brew extract python tap_owner/tap_name --version=3.6.5