La bonne et la mauvaise façon de configurer Python 3 sur MacOS
j’ai plongé mon orteil dans le développement Python alors que je me prépare à me diriger vers PyCon US. (Si vous y êtes également et que vous souhaitez partager votre histoire Python, faites-le moi savoir!) Lorsque j’ai installé un module pour bricoler, j’ai reçu un rappel que je devais installer Python 3 bientôt.
$ pip install todoist-python
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won"t be maintained after that date. A future version of pip will drop support for Python 2.7.
donc, j’ai fait ce que chacun d’entre nous ferait et j’ai cherché sur Google un guide pour mettre à jour mon environnement de développement, qui fonctionne sur Mac (le système d’exploitation macOS, anciennement connu sous le nom D’OS X)., À ma grande surprise, je n’ai trouvé qu’une poignée de messages StackOverflow, et ils m’ont indiqué des solutions partielles. Voici l’histoire complète de la façon de configurer votre environnement sans casser quoi que ce soit intégré dans le système d’exploitation macOS.
1. Install pyenv
Moshe Zadka met en garde contre le fait que faire cela pourrait entraîner une idée peu fiable de L’exécution de Python qui dépend trop étroitement du chargement des alias par les shells. Je savais que Moché était familier avec Python, mais ce que je ne savais pas, c’est qu’il est l’auteur de nombreux tutoriels Python ainsi que d’un livre à venir sur Python de développement sur macOS., Il a aidé 40 collègues à développer Python de manière sûre et cohérente sur les systèmes macOS en suivant un principe de base:
« la prémisse de base de tout développement Python est de ne jamais utiliser le système Python. Vous ne voulez pas que le « Python par défaut » de Mac OS X soit » python3. »Vous ne voulez jamais vous soucier de Python par défaut. »
Comment arrêter de se soucier de la valeur par défaut? Moshe recommande d’utiliser pyenv pour gérer les environnements Python (pour une plongée plus approfondie sur la configuration de pyenv, voir cet article)., Cet outil gère plusieurs versions de Python et est décrit comme » simple, discret, et suit la tradition Unix des outils à usage unique qui font bien une chose. »
bien que d’autres options d’installation soient disponibles, Le moyen le plus simple de commencer est avec Homebrew:
$ brew install pyenv
🍺 /usr/local/Cellar/pyenv/1.2.10: 634 files, 2.4MB
installer Python
maintenant, installons la dernière version de Python (3.7.,3 au moment d’écrire ces lignes):
Définissez votre valeur globale par défaut
maintenant que Python 3 est installé via pyenv, nous voulons le Définir comme notre version globale par défaut pour les environnements pyenv:
$ pyenv global 3.7.3
# and verify it worked
$ pyenv version
3.7.3 (set by /Users/mbbroberg/.pyenv/version)
la puissance de pyenv vient de son contrôle sur le chemin de notre shell. Pour que cela fonctionne correctement, nous devons ajouter ce qui suit à notre fichier de configuration (.zshrc pour moi, peut-être .bash_profile pour vous):
Après cette commande, notre dotfile (.zshrc pour zsh ou .,bash_profile pour Bash) devrait inclure ces lignes:
if command -v pyenv 1>/dev/null 2>&1; then
eval "$(pyenv init -)"
fi
maintenant, nous savons avec certitude que nous utilisons Python 3.7.3 et pip se mettra à jour à côté sans aliasing manuel entre les versions. L’utilisation de la recommandation de Moshe d’utiliser un gestionnaire de versions (pyenv) nous permet d’accepter facilement les futures mises à niveau sans se perdre sur le Python que nous exécutons à un moment donné.
Success
lorsque vous êtes à l’aise avec ce flux de travail, vous pouvez utiliser pyenv pour gérer plusieurs versions de Python. Il est également essentiel, pour la gestion des dépendances, d’utiliser des environnements virtuels., Je mentionne comment utiliser la bibliothèque venv intégrée dans l’article, et Moshe recommande virtualenvwrapper pour la gestion des environnements virtuels.
comprendre les runtimes Python
maintenant que vos versions de Python sont corrigées, il est prudent d’explorer pourquoi ce problème confond tant de gens.
la version de Python fournie avec macOS est bien obsolète par rapport à ce que Python recommande d’utiliser pour le développement. Réfléchir aux temps D’exécution de Python peut parfois être comiquement difficile, comme l’a noté XKCD.,
de nombreux utilisateurs ont déjà des dizaines d’interprètes Python sur leur ordinateur, mais ne savent pas comment les gérer efficacement. Trop souvent, les gens téléchargent simplement la dernière version de Python, La déplacent sur leur chemin et l’appellent un jour (ou utilisent brew install python3, ce qui ferait quelque chose de similaire). Cela peut provoquer des pannes sur la ligne de manière frustrante qui peut être difficile à dépanner.,
que ne pas faire
ma première idée sur la façon de faire de Python 3 Le Python par défaut sur mon système était de déplacer l’ancienne version et d’ajouter la nouvelle:
le modèle suivait ce que /usr / bin / fait habituellement entre les versions majeures de Python, mais j’ai rapidement appris que c’était le mauvais mouvement:
$ sudo mv /usr/bin/python /usr/bin/python2
mv: rename /usr/bin/python to /usr/bin/python2: Operation not permitted
heureusement, macOS. D »autres recherches prouvent que c » est exactement ce que nous ne devrions pas faire.
une Autre chose à ne pas essayer
Maintenant que nous savons ce que ne pas le faire, on va regarder ce que l’on pourrait faire., Il existe quelques options lorsque nous pensons aux modèles d’installation courants pour les applications sur macOS.
utilisez Python 3 comme défaut de macOS
le site Web de Python dispose d’un programme d’installation de macOS Python 3 que nous pouvons télécharger et utiliser. Si nous utilisons l’installation du package, Un remplissage python3 sera disponible dans /usr/local/bin/.
L’Aliasing est un must car le binaire Python stocké dans /usr/bin/ ne peut pas être modifié. Ce qui est bien avec un alias, c’est qu’il est spécifique à notre shell de ligne de commande. Puisque j’utilise zsh par défaut, j’ai mis ce qui suit dans le .,fichier zshrc:
Si vous utilisez le shell Bash par défaut, vous pouvez ajouter ce même texte à votre .bashrc:
Cette stratégie fonctionne, mais elle n’est pas idéale pour faire de futures mises à jour de Python. Cela signifie que nous devons nous rappeler de vérifier le site web et de télécharger les nouveaux fichiers car Python n »inclut pas de moyen de mise à jour en ligne de commande.
faire Gérer Homebrew Python 3
Le projet Homebrew fournit un gestionnaire de paquets libre et open source pour macOS sur lequel beaucoup de gens comptent. Il donne aux utilisateurs D’Apple une puissance similaire à apt-get ou yum., Si vous êtes un utilisateur Homebrew, vous avez peut-être déjà installé Python. Pour vérifier rapidement, exécuter:
$ brew list | grep python
python
Si Python apparaît sous la commande, il est installé. Quelle version est-ce? On va vérifier:
d’Accord, c’est parfait! Les responsables Homebrew ont mis à jour la bouteille Python par défaut pour pointer vers la dernière version., Étant donné que les mainteneurs Homebrew sont plus fiables que la plupart d’entre nous pour mettre à jour la version, nous pouvons utiliser la version de Homebrew de Python 3 avec la commande suivante:
maintenant, nous voulons pointer notre alias (par le haut) vers la copie de Python gérée par Homebrew:
# If you added the previous alias, use a text editor to update the line to the following
alias python=/usr/local/bin/python3
Pour là où homebrew a installé Python dans notre environnement, nous pouvons exécuter Brew info Python et rechercher les informations de chemin.,
cette méthode, qui consiste à utiliser Homebrew pour gérer notre environnement Python, est un bon point de départ, et cela avait du sens pour moi à l’époque.
et si nous avons encore besoin de Python 2?
Il est logique que quiconque découvre Python commence par Python 3., Mais ceux d’entre nous qui ont encore besoin de Python 2—par exemple, pour contribuer à un projet Python uniquement disponible en Python 2—peuvent continuer à utiliser le binaire Python macOS par défaut disponible dans /usr/bin/python:
$ /usr/bin/python
>>> print("This runtime still works!")
This runtime still works!
Homebrew est si merveilleux, il offre même une formule différente pour Python 2:
iv id= »temps, nous pouvons supprimer les alias du fichier de configuration de notre Shell pour revenir à l’utilisation de la copie par défaut de Python sur le système.
N’oubliez pas de mettre à jour pip vers pip3!,
la commande pip est le gestionnaire de paquets par défaut spécifiquement pour les paquets Python. Bien que nous ayons changé notre commande Python par défaut pour être la version 3, nous devons alias notre commande pip séparément si elle est sur la version précédente. Tout d’abord, nous devons vérifier sur quelle version nous sommes:
pour nous assurer que nous installons des paquets compatibles avec notre nouvelle version de Python, nous utiliserons un autre alias pour pointer vers la version compatible de Pip. Puisque nous utilisons Homebrew comme gestionnaire de paquets dans cette situation, nous savons qu’il a installé pip3 lorsque nous avons installé Python 3., Le chemin par défaut doit être le même que Python 3, mais nous pouvons le confirmer en demandant au shell de le trouver:
$ which pip3
/usr/local/bin/pip3
maintenant que nous connaissons l’emplacement, Nous l’ajouterons à notre fichier de configuration shell, comme nous l’avons fait auparavant:
$ echo "alias pip=/usr/local/bin/pip3" >> ~/.zshrc
# or for Bash
$ echo "alias pip=/usr/local/bin/pip3" >> ~/.bashrc
enfin, nous pouvons confirmer réinitialiser notre shell actuel et voir ce que nous pointons vers:
# This command reloads the current shell without exiting the session
# Alternatively, exit the shell and start a new one
$ exec $0
# Now we can look to see where pip points us
$ which pip
pip: aliased to /usr/local/bin/pip3
Nous pouvons éviter d’utiliser homebrew pour mettre à jour PIP, mais cela nécessite un tutoriel beaucoup plus long de la documentation Python.,
faites-le dès le début
Si vous commencez tout juste à développer Python sur un macOS, effectuez les configurations nécessaires pour vous assurer que vous utilisez la bonne version de Python depuis le début. L’installation de Python 3, avec ou sans Homebrew, et l’utilisation d’alias vous permettra de commencer à coder, mais ce n’est pas une bonne stratégie à long terme. Utiliser pyenv comme une solution de gestion de version simple pour vous permettre de bien démarrer.
Cet article a été initialement publié en Mai 2019 et a été mis à jour par l’éditeur.