pythonでちょっとしたテストをする際に独立した環境を準備する方法です。
virtualenv
コマンドで独立したpython環境を作成して、direnv
でcd
するだけで環境の切り替えをすることが出来ます。
環境
- ubuntu 16.04 LTS
- python 2.7
初期設定
下記のパッケージをインストールします。
$ sudo apt install direnv python-virtualenv
.bashrcに下記の2行を追加します。(direnvの設定)
$ tail -2 ~/.bashrc export EDITOR=emacs eval "$(direnv hook bash)"
開発環境の作成
開発環境は、ディレクトリを作成して.envrc
ファイルを準備します。
$ mkdir sample $ cd sample $ direnv edit .
EDITOR
に指定したエディタが開くので必要な設定を追加します。
pythonのテスト環境をvirtualenv
で準備する場合は、以下のように設定します。
$ direnv edit . direnv: loading .envrc Running virtualenv with interpreter /usr/bin/python2 New python executable in /home/ksaito/tmp/sample/plib/bin/python2 Also creating executable in /home/ksaito/tmp/sample/plib/bin/python Installing setuptools, pkg_resources, pip, wheel...done. direnv: export +VIRTUAL_ENV ~PATH $ cat .envrc PLIB=plib ACTIVE=${PLIB}/bin/activate if [ ! -e ${ACTIVE} ] then virtualenv --no-site-packages ${PLIB} fi . ${ACTIVE} $
使い方
使うときには、ディレクトリに移動するだけです。
direnv
でVIRTUAL_ENV
とPAHT
が追加され、pip
でパッケージ一覧を表示すると4つしかないことが分かります。
$ cd sample direnv: loading .envrc direnv: export +VIRTUAL_ENV ~PATH $ pip list --format=legacy pip (9.0.0) pkg-resources (0.0.0) setuptools (28.7.1) wheel (0.30.0a0) $ pip list --format=legacy | wc -l 4 $
ディレクトリを移動すると自動的に設定はもとに戻ります。
パッケージは、32個あります。
$ cd .. direnv: unloading $ pip list | wc -l 32 $
direnv
は、pythonに限らず利用できるのでとても便利です。
プロンプトを変えたかったのですが、PS1
は設定しても無視されてしまう…