[PYTHON] À propos de la prise en charge d'Anaconda / Miniconda de pyenv

L'année 2015 a commencé avec la sortie de td-client-python (plus précisément, des données de trésor du calendrier de l'Avent 2014 [Python Pandas]. Hit](http://qiita.com/kiyoto/items/2d8d49e3a9b34f652e52)?), Je pense que c'était une année qui pourrait être appelée la première année de Python pour Treasure Data.

Je pensais que j'écrirais quelque chose sur td-client-python, mais ce n'est pas très intéressant d'écrire quelque chose que vous pouvez comprendre en lisant la source, donc si vous ne comprenez pas même si vous lisez la source, pyenv et pyenv- Je profiterai de cette occasion pour expliquer une partie de la mise en œuvre de virtualenv. Cela n'a rien à voir avec Treasure Data, mais j'utilise aussi pyenv pour tester td-client-python et il devrait être acceptable de l'écrire dans Advent Caledar ...

Qu'est-ce que pyenv

Vers l'été 2012, j'ai soudainement pensé à copier l'arbre de rbenv et essayé sed -e's / RBENV / PYENV / g'-e's / RUBY / PYTHON / g'. En bref, c'est rbenv pour Pythonista. À l'origine, le but était de faciliter le basculement entre plusieurs versions de CPython et PyPy, nous prenons donc en charge l'installation de diverses versions telles que PyPy, Jython, Stackless, IronPython ainsi que CPython. .. Bien que les spécifications de rbenv aient été intentionnellement modifiées dans certaines parties, il devrait être possible de l'utiliser avec presque la même facilité d'utilisation que rbenv.

Qu'est-ce que pyenv-virtualenv?

Jusqu'à il y a quelques années, je pense qu'il était courant d'utiliser virtualenvwrapper pour gérer plusieurs virtualenv, mais _ j'avais beaucoup de réflexions_ donc j'ai rendu possible la gestion de plusieurs virtualenv comme une version de pyenv. est. Quand j'ai commencé à le créer, c'était un script qui venait d'encapsuler la commande virtualenv, mais après cela, la fonction d'activation automatique de virtualenv a été ajoutée, et je pense que cela devient peu à peu plus pratique et plus gros. Je vais.

Il existe également un plug-in pour gérer virtualenv avec pyenv appelé pyenv-virtualenvwrapper, qui est également implémenté assez dur, mais le shell L'incompatibilité entre virtualenvwrapper, qui fonctionne comme une fonction, et pyenv, qui fonctionne sur des scripts shims, est incompatible, et je ne le recommanderais pas à moins que vous ne soyez très friand de virtualenvwrapper.

Début du support Anaconda / Miniconda dans pyenv

Il y a environ deux ans, il était possible de sélectionner anaconda, anaconda3, miniconda, miniconda3 comme version de pyenv. Fondamentalement, c'était une tâche simple de télécharger et de frapper .sh, qui est distribué par Continuum Analytics en standard.

Problèmes avec la prise en charge d'Anaconda / Miniconda dans pyenv

J'ai essayé d'installer correctement Anaconda sur pyenv, mais quand je l'ai installé, j'ai remarqué qu'il y avait pas mal de problèmes. Par exemple

  1. Anaconda détourne curl, ʻopenssl`, etc.
  1. En premier lieu, curl est cassé et ne fonctionne pas avec Debian
  1. Le script ʻactivate` joint ne peut pas être utilisé

À propos, jusqu'à présent, il était possible d'installer Anaconda avec pyenv, mais en raison du problème ci-dessus, il était difficile de l'utiliser régulièrement à moins qu'Anaconda ne soit réglé sur pyenv global. Personnellement, j'ai rarement utilisé Anaconda et seulement utilisé Miniconda3.

À propos du support Anaconda / Miniconda dans Pyenv

Même si la fièvre Python augmente en interne, j'ai pensé que ce serait un problème de laisser le support Anaconda tel quel, alors j'ai essayé de le réparer de différentes manières. Pour vous donner une idée approximative,

  1. Changement d'environnement conda pour qu'il soit traité comme une version de pyenv comme virtualenv (yyuu / pyenv # 471)
  2. Pour curl, ʻopenssl, sqlite3, etc., changez pour utiliser celui installé dans system` au lieu de celui inclus dans Anaconda / Miniconda ([yyuu / pyenv # 491]. (https://github.com/yyuu/pyenv/pull/491))
  3. pyenv activate peut maintenant activer conda env ainsi que virtualenv (yyuu / pyenv-virtualenv # 104)
  4. Préparation d'un script ʻactivate pour permettre à conda env d'être activé dans un format tel que source activate foo` (yyuu / pyenv-virtualenv # 108 -virtualenv / pull / 108)))
  5. Lors de la création d'un virtualenv avec pyenv virtualenv, l'environnement est créé non seulement avec virtualenv et pyvenv mais aussi avec conda create ([yyuu / pyenv-virtualenv # 125](https: // github) .com / yyuu / pyenv-virtualenv / pull / 125))

Et ainsi de suite, j'ai décidé de faire beaucoup de choses ... Pour le moment, je pense que les mesures mentionnées ci-dessus ont presque résolu les problèmes d'utilisation d'Anaconda avec pyenv mentionnés ci-dessus.

Résumé

Configurer Jupyter en _correctement _ en installant matplotlib etc. sur CPython est assez difficile (surtout quand OS X nécessite --enable-framework etc.), donc Anaconda / Miniconda Je pense que pouvoir le gérer normalement à partir de pyenv est un pas en avant. Nous continuerons d'ajouter des fonctionnalités telles que Pandas et Jupyter qui peuvent résister à une utilisation dans des applications d'analyse de données si nécessaire.

Depuis le 18 décembre 2015 (vendredi), les modifications du côté pyenv-virtualenv n'ont pas encore été publiées sur Homebrew etc., donc pour utiliser la version à laquelle les modifications ont été appliquées, https: // github. Vous devez récupérer les dernières modifications à partir de com / yyuu / pyenv-virtualenv. Je voudrais le publier sur Homebrew, etc. dans l'année.

finalement

Je sens que je vais sortir du nombre d'étoiles en fluent dans un petit moment, donc je ne suis pas sûr si je suis un employé de Treasure Data, mais j'aimerais demander la coopération de Stars!

fluent/fluentd

yyuu/pyenv

Recommended Posts

À propos de la prise en charge d'Anaconda / Miniconda de pyenv
Prise en charge de Fabric pour Python 3
À propos de Python for loop
Construire un environnement Python avec pyenv, pyenv-virtualenv, Anaconda (Miniconda)
À propos de Python, pour ~ (plage)
À propos de pgbench pour MySQL
À propos du polymorphisme pour l'élimination des nids
Paramètres initiaux d'Anaconda 4.4.0 pour Windows
F2py sur Miniconda pour Windows
À propos du support japonais de cometchat
A propos de l'avertissement "Compilé pour ~" de mod_wsgi
À propos de "for _ in range ():" de python
Que diriez-vous d'Anaconda pour créer un environnement d'apprentissage automatique avec Python?