Python の venv と ensurepip とを「正しく」使う

最近の Python にはパッケージ管理まわりのモジュールが導入されて使いやすくなりつつある、という話はよく聞くが、どういうふうにそれらのツールを使うのが「正しい」とされているのかイマイチわかりづらかったので、自分のためにメモ。間違っている可能性がアリアリなのでぜひコメントで訂正お願いします。

環境は Python 3.4 を想定。つまり「ensurepipvenv とが入っている環境」を想定。

ノリとしては

  1. venv で仮想環境を作成。
    • $ pyvenv envname
  2. source bin/activate で仮想環境を activate.
    • $ source envname/bin/activate
  3. ensurepip で pip を導入。
    • $ python -m ensurepip
  4. pip でモジュールなどを導入。
    • $ pip install modulename

って感じの順番。

ここ を見ると、pyvenv myenv とすれば pip まで導入されるように書いてあるので手順 3 以下はいらないのかも。

もし venv が入っていない場合は、おそらく Python に同梱されているもの以外の venv はなくて、virtualenv で代替する必要がある。そうだとしたら下の方法で先に pip を導入してしまって pip install virtualenv とするのが最も簡単である。virtualenv の使い方は、ほとんど venv と同じで、

  • $ virtualenv envname —system-site-packages (既存のパッケージを含める場合)
  • $ source envname/bin/activate

とする。環境中にモジュールを導入したい場合は、環境に入ってから pip を用いて入れる(環境生成時に自動で入ることもある)。環境から抜けたい場合は $ deactivate とする。

もし ensurepip が入っていない (Python <= 3.3) 環境ならば、pip を手動で導入する。環境の activate 後に

  1. get-pip で pip を導入。
    • $ wget [https://raw.github.com/pypa/pip/master/contrib/get-pip.py](https://raw.github.com/pypa/pip/master/contrib/get-pip.py)
    • $ python get-pip.py

とする。zip が文字列にエンコードされて入っているファンキーな感じのコードである。

venv の使い方

activate の方法は上に書いた通りに source する。activate したものを deactivate するには $ deactivate と打てばよい。 デフォルトの Python を変更するには次のようなノリで。

export PYTHONPATH=$HOME/to/environment
export PATH=$HOME/to/environment/bin:$HOME/local/bin:$PATH

環境を削除したいときは作成した環境のディレクトリを消せばよい。

pip の使い方

一括インストールなど、pip の使い方は ここ が詳しい。

cron とかするとき

http://stackoverflow.com/questions/3287038/cron-and-virtualenv つまりは venv で作ったディレクトリ内の python をコマンドとして指定してやればよい。どのディレクトリにいるかが重要ならば、cd /fullpath/directory && /full/path/python /full/path/to/code.py みたいにする。