Gérez chaque version de Python avec Homebrew

Python a un excellent outil pour créer des environnements fermés appelé virtualenv, tox. Il existe un outil élégant appelé latest /) qui automatise plusieurs versions de test. (Subjectivité personnelle) Afin de gérer efficacement ces outils, il existe une demande de coexistence de plusieurs versions de Python. (Eh bien, la coexistence de plusieurs versions ne se limite pas à Python, cela semble être une exigence qui peut être Ruby ou Perl, et je pense que vous pouvez trouver une bibliothèque pour cela avec un peu de recherche.) Le logiciel permettant de répondre facilement à cette requête est pythonbrew, pythonz, [pyenv](https :: //github.com/yyuu/pyenv) et ainsi de suite.

Mais j'ose utiliser Homebrew

La raison en est (rires). Si je vous force à dire, je ne veux pas trop augmenter le nombre d'outils de gestion. Au fur et à mesure que le nombre d'outils de ce type augmente, il devient difficile de comprendre lesquels, pourquoi et comment ils sont gérés, et les fichiers de configuration (principalement .bashrc / .zshrc) se développent également.

Puisque Homebrew est un gestionnaire de paquets à usage général, il fournit naturellement des logiciels autres que Python et (comme je l'ai appris récemment) Homebrew-Cask , Les applications GUI peuvent également être gérées. Si vous les assemblez autant que possible, ce sera plus facile à gérer.

Il existe une version mineure de Formula. C'est un mensonge.

Le référentiel Homebrew actuel HEAD ne prend en charge que les dernières versions de Python 2 et 3 (2.7, 3.4), et les autres versions ne peuvent pas être installées.

python


% brew search python
gst-python010  python         python3        wxpython       zpython
homebrew/apache/mod_python

% brew info python
python: stable 2.7.6 (bottled), HEAD
http://www.python.org

…

% brew info python3
python3: stable 3.4.1 (bottled), HEAD
https://www.python.org/

#Mais j'ai une ancienne version de Formula ... quand et où l'ai-je obtenue ...

% brew list | grep python
python
python26
python3
python31
python32

Il existe des référentiels qui fournissent des formules pour différentes versions de logiciels, mais uniquement pour Python. Pourquoi est-ce ainsi… https://github.com/Homebrew/homebrew-versions

Créez votre propre référentiel Homebrew

J'ai donc décidé de créer un référentiel Homebrew personnalisé avec chaque version de Formula.

https://github.com/FGtatsuro/homebrew-custom

Créer / utiliser un référentiel est très simple

  1. Sur github, créez un référentiel nommé homebrew- <nom du référentiel> (ex. Homebrew-custom).
  2. Enregistrez le référentiel créé avec brew tap (nom d'utilisateur Github) / (nom du référentiel). (FGtatsuro / custom dans ce référentiel)
  3. Utilisez brew update pour obtenir la formule dans le référentiel enregistré.

Chaque formule est basée sur la formule originale (python.rb, python3.rb) avec les modifications suivantes.

  1. Pendant l'installation, utilisez «make alt install» au lieu de «make install». Cela empêche la création de liens symboliques tels que python, python3 sous bin (par défaut:/ usr / local / bin /) de Homebrew. (Un lien sera créé qui inclut même des versions mineures comme python3.3.)
  2. pip et easy_install sont installés ensemble, mais de même, les liens symboliques qui n'incluent pas de versions mineures (ex. Pip, pip2) ne seront pas créés.

Les deux éléments 1 et 2 permettent d'éviter d'exécuter une version non souhaitée en raison d'un écrasement de lien symbolique lorsque plusieurs versions sont installées. Je pense qu'il y a des avantages et des inconvénients à supprimer le lien python, mais j'utilise aussi l'environnement créé avec virtualenv dans mon environnement habituel, en particulier parce que ces liens symboliques sont créés dans cet environnement. Cela n'a pas d'importance. Sinon, c'est une bonne idée de décider quelle version vous souhaitez utiliser dans la version principale, puis de créer un nouveau lien symbolique.

python


% ln -s /usr/local/bin/python34 /usr/local/bin/python

La réaction habituelle de la personne à côté de moi est ...

"Wow, écrivez simplement ww MakeFile, n'est-ce pas? Www? Est-ce que ça veut dire le gérer avec Homebrew?" (J'ai l'impression d'avoir dit ça)

Postscript (26/05/2014)

Il semble que python, python3 puisse être demandé en raison de la dépendance d'une autre formule, et à ce moment-là, il entre en conflit avec python27, python34 mis dans le référentiel personnalisé. Il est donc plus sûr d'utiliser la dernière version du référentiel d'origine.

Recommended Posts

Gérez chaque version de Python avec Homebrew
Vérifier la version avec python
Gérez l'environnement de plusieurs versions de Python avec Pythonz, virtualenv
Gérez les tâches cron avec python
Gérez l'environnement python avec virtualenv
Spécifiez la version python avec virtualenv
Publiez votre propre bibliothèque Python sur Homebrew
Gérez plusieurs versions de Python avec des alternatives de mise à jour (Ubuntu)
Statistiques avec python
Python avec Go
Twilio avec Python
Intégrer avec Python
Jouez avec 2016-Python
AES256 avec python
Testé avec Python
python commence par ()
avec syntaxe (Python)
[Python] Chaque hachage
Bingo avec python
Zundokokiyoshi avec python
Version 64 bits de PYTHON2.7
Excel avec Python
Micro-ordinateur avec Python
Cast avec python
Écrivons FizzBuzz avec une erreur: Version Python
Je voulais installer Python 3.4.3 avec Homebrew + pyenv
[Rust / Python] Gérer numpy avec PyO3 (version d'août 2020)
[Version améliorée] Script pour surveiller le CPU avec Python
Gérez bien AWS avec la bibliothèque Python Boto
Installez Python 3 sur MacOS Catalina (avec Homebrew uniquement)
Gérez plusieurs gestionnaires de contexte avec Python contextlib.
Résumé des versions du noyau / Python pour chaque version de Debian
Notez que Vim installé par Homebrew ne démarre pas avec l'erreur Python 3.8
Résolvez "AtCoder version! Arimoto (Débutant)" avec Python!
Zip, décompressez avec python
Django 1.11 a démarré avec Python3.6
Jugement des nombres premiers avec Python
Python avec eclipse + PyDev.
Grattage en Python (préparation)
Text mining avec Python ① Analyse morphologique (re: version Linux)
Essayez de gratter avec Python.
Apprendre Python avec ChemTHEATER 03
Recherche séquentielle avec Python
"Orienté objet" appris avec python
Exécutez Python avec VBA
Manipuler yaml avec python
Communication série avec python
Apprendre Python avec ChemTHEATER 05-1
Apprenez Python avec ChemTHEATER
Exécutez prepDE.py avec python3
1.1 Premiers pas avec Python
Collecter des tweets avec Python
Binarisation avec OpenCV / Python
3. 3. Programmation IA avec Python
Méthode Kernel avec Python
Non bloquant avec Python + uWSGI
Présentation de Boost.python avec homebrew
construction d'environnement python homebrew
Grattage avec Python + PhantomJS
Créer une fonction Lambda de version Python (+ couche Lambda) avec Serverless Framework