たけっぱ横丁

the technical document for Vim(Editor), Natural Language Proecssing(NLP) tools and Programming(Python, Ruby, C++ etc).

pyenv+virtualenvでPythonの仮想環境を作る

Pythonでの開発と仮想環境

開発者ならば至極当然のように使っている仮想環境.
この記事では,なぜ仮想環境を利用するのかを始めとして, Pythonでの仮想開発環境を導入まで述べたいと思います.

なぜ仮想環境なのか

簡潔に言うと, こっちのマシンでは動いたけど,あっちのマシンでは動かないよー

という状況を解決しやすくするために使います.
そもそも配布するようなプログラムを書くときには公開しないプログラムでも心がけるべきですが,

"この環境が整ったマシンでは必ず動く"

という状況設定をして開発する必要が有ります.
なぜなら, ここがわからないと誰もその動かし方がわからないですし
複数人で開発するときに同じ環境を整えないと, まともな開発を進めることはできません.

ではどうやって, 現在の環境を把握するか ということになりますが

新しい開発を行うたびに新しい環境を用意する

というのが答になります. そして,それを実現するのが仮想環境です.

仮想環境を使うことのメリット

  • 開発プロジェクトの依存関係が明確になる.
  • 開発環境とテスト環境の分離が簡単
  • 利用している環境とプロジェクトの環境を簡単に切り離すことができる

pyenvとvirtualenvにおける仮想環境の導入

Pythonで仮想環境を導入するためのツールがvirtualenvとなります. それに併せてよく利用されるのがpyenvになります.

これらの関係が若干わかりにくかたので, 簡単な図を用意しました

overview

pyenv

ひとえにPythonといっても色々なPythonがあります.

その複数のバージョンのPythonを管理するのが
pyenvです

公式のPythonパッケージだけでなく 科学計算用のパッケージ(numpy, scipyなど)付属のAnaconda等もサポートしています.

virtualenv

Pythonの仮想環境化のツール. Pythonのライブラリなどの環境などをプロジェクトごとに作れる.

端的に言ってしまえばプロジェクトごとのpipができるようになります.

Pythonのバージョンを指定して仮想環境を構築することも可能だが
そのためにはそのPythonバイナリを予めインストールしておく必要がある.
pyenvがそれをサポートするツールということになります.

virtualenvwrapper

virtualenvを使いやすくするためのツール. virtualenvを利用した仮想環境の作成, 削除やフックの設定が容易になる.

pyenv-virtualenvwrapper

pyenvとvirtualenvを組み合わせたツール このPythonのバージョンで仮想環境をつくりたいっといったことが簡単に実現できます.

その他 参考サイト

VIRTUALENVについて - 今日のPython