web-dev-qa-db-fra.com

Comment puis-je installer une version précédente de Python 3 dans macOS en utilisant homebrew?

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.

112
ePi272314

Réponse courte

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

Longue réponse

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.

Solution

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

Python> 3.6.5

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.

216
ePi272314

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
30
François

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~ $ 
14
Mian Asbat Ahmad

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:

  • Essayez d'éviter d'utiliser Homebrew pour la version précédente donnée par la formule Python ou Python3 .
  • Ne pas essayer de compiler Python

Solution:

  1. Téléchargez le programme d'installation macOS 64 bits ou le programme d'installation macOS 64 bits/32 bits : https://www.python.org/downloads/release/python-365/
  2. Dans l’étape précédente, il téléchargerait Python 3.6.5 , si, par exemple, vous souhaitez télécharger Python 3.4.4 , remplacez dans l'url ci-dessus python-365 par python-344
  3. Télécharger cliquez sur le fichier que vous avez téléchargé un programme d'installation graphique s'ouvre
  4. Si vous avez téléchargé python-365 , après l'installation, pour lancer cette version de python, vous devrez taper votre terminal python365 , de même chose pour pip, ce sera pip365

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.

  1. Peu importe que vous ayez déjà installé python ou non.
  2. Télécharger Anaconda
  3. Une fois installé, dans le type de terminal: conda init
  4. En terminal, créez un environnement virtuel avec toute version python, par exemple, j'ai choisi 3.4.4: conda create -n [NameOfYour VirtualEnvironment] python=3.4.4
  5. Ensuite, dans le terminal, vous pouvez vérifier tout l’environnement virtuel que vous avez créé avec la commande: conda info --envs
  6. Ensuite, dans le terminal, activez l’environnement virtuel de votre choix avec: conda activate [The name of your virtual environment that was shown with the command at step 5]
3
vincedjango

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
0
Steven Peters