こんにちは、塊です。
VirtualBox で作成した Ubuntu 12.04 上に Django の開発環境を構築した際のメモです。
今回は pyenv + virtualenv で作ったサンドボックス上で動くようにしました。


pyenv

pyenv とは

pyenv は Python のバージョン管理ツールです。
シェルスクリプトで書かれています。
異なるバージョンの Python をユーザーの環境にインストールし、切り替えて使うことができます。

pyenv をインストール

git clone https://github.com/yyuu/pyenv.git ~/.pyenv

とすることでインストールできます。

また、パスを通す必要があります。

echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

Python をインストール

pyenv で Python をインストールするために、僕の環境では以下のパッケージを入れる必要がありました。 ※ このページによくあるビルド時の問題が書かれているので、もしうまくいかなかった場合は参照してください。

sudo apt-get install libbz2-dev libreadline-dev libsqlite3-dev

インストール可能な Python のバージョンは

pyenv install -l

で確認できます。

今回は 2.7.5 をインストールします。

pyenv install 2.7.5

使いかた

使えるバージョンは以下のコマンドで確認できます。

pyenv versions

プロジェクトのディレクトリに移動してから

pyenv local 2.7.5

とすることで、そのプロジェクトでのみ Python 2.7.5 が利用されるようになります。
この状態で

pip install ***

とすると、2.7.5 の環境にパッケージがインストールされます。
なお、パッケージにコマンドラインツールが含まれている場合は、

pyenv rehash

として symlink を作り直してやらないと、コマンドラインツールを利用できません。

virtualenv

virtualenv とは

virtualenv は、独立した Python の実行環境を作成するためのツールです。
ここで言う独立した Python の実行環境とは、バージョンの異なる Python 実行環境と、同じバージョンでも異なるパッケージの入った実行環境を指しています。

virtualenv だけでも複数のバージョンの Python を切り替えることができるので、pyenv と機能が被っている部分があります。
しかし、virtualenv で実行環境を作成するには、元となる Python 本体をどうにかして用意しなければなりません。
pyenv + virtualenv 構成だと、Python 本体の用意と環境の切り替えは pyenv、同じバージョンに対して複数の実行環境を作成するのは virtualenv が行うことになります。

複数の Python 本体を用意するツールとして pythonz といったものもあり、pythonz + virtualenv という構成も考えられますが、pyenv + virtualenv のほうがインストールが手軽でコマンドがシンプルに感じました。
また、pyenv は Python で書かれていないため、デフォルトの Python 環境を汚さないのもよいと思います。

virtualenv のインストール

pyenv 用の virtualenv プラグインがありますので、これをインストールします。

git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv

使いかた

pyenv virtualenv 2.7.5 venv27

としてやると、 Python 2.7.5 で、かつパッケージがまっさらな環境が新規に作成されます。
作成した環境は、バージョンの切り替えと同様

pyenv local venv27

として利用可能です。

おまけ: pip によるパッケージ管理

pyenv と virtualenv を使ってサンドボックスを簡単に作成できるようになりました。
今度はプロジェクト単位でのパッケージ管理を簡単にしたいと思います。

django-admin.py startproject hoge

として作成された hoge プロジェクトがあったとします。
hoge プロジェクトでは py.test でテストを書くことになりました。

このような場合、hoge/packages.txtに以下のような記述をしておきます。
このようにファイル化することで、パッケージの構成をバージョン管理することができます。

Django==1.5.2
py==1.4.15
pytest==2.3.5
pytest-django==2.3.0
wsgiref==0.1.2

なお、

pip freeze

とすると現在の環境に入っているパッケージ一覧が出力されますので、新規作成の際に利用できます。

すると、例えば新しくプロジェクトに参加した人が開発環境をセットアップする場合、

git clone https://<repository>/hoge.git
cd hoge
pip install -r packages.txt

とするだけで、同じ環境を構築できます。

::...
免责声明:
当前网页内容, 由 大妈 ZoomQuiet 使用工具: ScrapBook :: Firefox Extension 人工从互联网中收集并分享;
内容版权归原作者所有;
本人对内容的有效性/合法性不承担任何强制性责任.
若有不妥, 欢迎评注提醒:

或是邮件反馈可也:
askdama[AT]googlegroups.com


订阅 substack 体验古早写作:


点击注册~> 获得 100$ 体验券: DigitalOcean Referral Badge

关注公众号, 持续获得相关各种嗯哼:
zoomquiet


自怼圈/年度番新

DU22.4
关于 ~ DebugUself with DAMA ;-)
粤ICP备18025058号-1
公安备案号: 44049002000656 ...::