Help us understand the problem. What is going on with this article?

食わず嫌いしてたpyenvを使ってみたら便利過ぎて腰を抜かした話

More than 3 years have passed since last update.

【追記】この記事は2014年に書かれたものであり、内容については現在では歴史的意義以外の価値はありません。今からPython始めるならPython3でvenv使わないと怖い人たちに殴られるのでそうしましょう。


食わず嫌い、ダメ。ゼッタイ。

http://qiita.com/who_you_me/items/1d37d964c1459b9625fa#1-2

過去にPythonの開発環境について記事を書いた時、「pyenv? 別にPythonのバージョン切り替えたいニーズないから(゚⊿゚)イラネ」とかほざいてましたがこれは大きな間違いでした。お詫びして訂正いたします。

pyenv is 何

pyenv lets you easily switch between multiple versions of Python.

https://github.com/yyuu/pyenv

Pythonのバージョンを簡単に切り替えられるツールです。要はrbenvと同じで、Pythonを複数バージョンインストールして、ディレクトリ毎に使用するバージョンを指定できます。

お前vitrualenvだけあればいいって言ってただろ

はい、確かにそう言いました。私のPythonとの付き合い方ではせいぜい2系を3系を使い分けたいぐらいであり、そのくらいならvirtualenvだと思ってました。
参考: http://qiita.com/who_you_me/items/543a901a827e93401db1

しかし、virtualenv (+ virtualenvwrapper)は確かに革命的に便利なツールですが、一つだけ大変困った問題があります。

いちいちworkonするの面倒くさい!!!

これです。しかも私の場合なぜか一発でworkonって入力できず、wokornwokronと打ってしまい何度か打ち直すハメになります。

エイリアス設定しとけって話もありますが、どうせディレクトリごとに使いたい仮想環境って同じなので、あるディレクトリに飛んだら自動的にworkonしてくれるようにしたい。

.bashrcで頑張ればいけるのかもしれませんがなかなか面倒そうです。

pyenv-virtualenv がすべて解決してくれる!!!

pyenvに超便利なプラグインがありました。

https://github.com/yyuu/pyenv-virtualenv

インストールすると、pyenvにpyenv virtualenvコマンドが追加されます。
これを使うと、pyenvで指定できるPythonのバージョンにvirtualenvで作った仮想環境が加わります。

$ pyenv virtualenv 3.4.2 django
$ pyenv versions
* system
  2.7.8
  3.4.2
  django

この仮想環境をpyenv localに設定すると何が起こるでしょう?
そうです、指定のディレクトリに移動するだけで、自動的にvirtualenvで作った仮想環境に入ることができるのです!!

$ mkdir mydjangoproject
$ cd mydjangoproject
$ pyenv local django
$ pip install django
$ pip freeze
Django==1.7.1

$ cd ..
$ pyenv local
system

$ pip freeze
argparse==1.2.1
six==1.8.0
stevedore==1.0.0
virtualenv==1.11.6
virtualenv-clone==0.2.5
virtualenvwrapper==4.3
# 別の環境!!

$ cd mydjangoproject
$ pip freeze
Django==1.7.1
# cdしただけでdjangoの環境に入った!!

当然ですが他にdjangoのプロジェクトを始めたい場合、(Pythonのバージョンが同じで良いなら)ディレクトリ作ってpyenv local djangoしてやるだけでOKです。

これでわざわざworkon叩く必要がありません。今まで食わず嫌いしてた自分が恥ずかしいです。

who_you_me
Freelance Web Developer and Data Scientist
http://d.hatena.ne.jp/fuyumi3/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした