[PYTHON] 3 types de solutions de contournement pour activer le problème de collision lorsque pyenv et anaconda coexistent

Ceci est un supplément à édition définitive de la construction de l'environnement python.

20180312 PostScript

Il semble que conda activate ait été adopté dans conda 4.4.0 publié le 20/12/2017. conda/CHANGELOG.md Il semble que «source activate» n'est pas obsolète pour le moment, mais «conda activate» est recommandé.

Depuis que docker est devenu familier récemment (je ne ressens pas de stress même dans l'environnement Windows via proxy), le besoin d'insérer pyenv a diminué, et je migre également vers docker-anaconda, mais pour référence.

Commentaire. Merci beaucoup.

Quel est le problème de conflit d'activation entre pyenv et anaconda?

Sur Linux et Mac, vous pouvez installer anaconda via pyenv. De plus, je pense qu'il y a des cas où vous souhaitez basculer entre plusieurs environnements de développement avec anaconda. L'environnement dans anaconda peut être commuté comme source activate <nom de l'environnement>, mais sous pyenv, l'erreur suivante se produit et tout le shell tombe.

$ source activate
#>>> pyenv: -bash: command not found

Je ne sais pas pourquoi, mais pyenv utilise un script shim pour suivre le chemin, donc quelque chose d'étrange peut se produire.

Si anaconda a adopté conda activate ... orz

Solution

1. N'utilisez pas pyenv.

Definitive Edition introduit essentiellement cette méthode. Cette méthode utilise pyenv uniquement comme programme d'installation pour anaconda. Après avoir installé anaconda via pyenv, écrivez le chemin d'installation d'anaconda dans path et laissez pyenv être ignoré.

$ echo 'export PATH="$PYENV_ROOT/versions/anaconda3-2.5.0/bin/:$PATH"' >> ~/.bashrc

--Avantage: le moins de paramètres et moins à retenir.

Avec cette méthode, vous ne serez pas du tout conscient de pyenv après avoir défini le chemin.

Utilisez source activate pour tout changement d'environnement.

2. Exécutez activate avec le chemin complet.

En 1., «pyenv local» ne peut pas être utilisé, mais je pense que c'est fatal pour certaines personnes. Surtout pour les développeurs Web qui souhaitent changer la dépendance du package pour chaque PJ, je pense qu'il est plus efficace de changer l'environnement pour chaque dossier de travail avec pyenv local. C'est une solution simple, mais si vous spécifiez activate avec le chemin complet, vous pouvez l'exécuter avec conda activate.

$ source $PYENV_ROOT/versions/anaconda3-2.5.0/bin/activate <Nom de l'environnement>

--Avantage: simple

L'inconvénient peut être résolu en définissant un alias.

$ echo 'alias activate="source $PYENV_ROOT/versions/anaconda3-2.5.0/bin/activate"' >> ~/.bashrc
$ source ~/.bashrc

** Ça? C'est bien ?? **

Vous pouvez utiliser pyenv local pour changer d'environnement pour chaque dossier de travail.

$ conda create -n py2 python=2.7
$ mkdir py2
$ cd py2
$ pyenv local anaconda3-2.5.0/envs/py2
$ python
#>>>Python 2.7.11 |Continuum Analytics, Inc.| (default, Dec  6 2015, 18:08:32)
#>>>[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2

Pour changer d'environnement, utilisez ʻactivate et pyenv local` ensemble.

3. Insérez pyenv-virtualenv

C'est la méthode décrite dans Ajout de l'édition définitive. Mettez pyenv-virtualenv, qui est un plug-in de pyenv, et utilisez pyenv activate.

Installation

$ git clone git://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
source ~/.bashrc

Pyenv-virtualenv facile à utiliser

$ conda create -n py2 python=2.7
$ mkdir py2
$ cd py2
$ pyenv activate anaconda3-2.5.0/envs/py2
$ python
#>>>Python 2.7.11 |Continuum Analytics, Inc.| (default, Dec  6 2015, 18:08:32)
#>>>[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2

$ pyenv deactivate

Notez que si vous utilisez source activate par erreur, le shell tombera.

Avantages: Probablement l'utilisation correcte. Inconvénients: Mettre pyenv-virtualenv juste pour ça ...

Pour changer d'environnement, utilisez pyenv activate et pyenv local ensemble.

Note

Les deux méthodes utilisent conda pour la gestion de l'environnement virtuel. (N'utilisez pas virtualenv.) Je pense que vous aimez le choix parmi 1 à 3. J'étais une secte, mais récemment je suis devenue deux sectes.

Recommended Posts

3 types de solutions de contournement pour activer le problème de collision lorsque pyenv et anaconda coexistent
Réponse incorrecte lors de l'utilisation de numpy.prod () pour le problème B de ABC169
Mécanisme de pyenv et virtualenv
Coexistence de pyenv et autojump
Pièges et solutions de contournement pour pandas.DataFrame.to_sql
[Python] Mémo d'erreur et de solution lors de l'utilisation de venv avec pyenv + anaconda