読者です 読者をやめる 読者になる 読者になる

ksaitoの日記

日々試したことの覚え書き

pythonの開発環境

pythonでちょっとしたテストをする際に独立した環境を準備する方法です。

virtualenvコマンドで独立したpython環境を作成して、direnvcdするだけで環境の切り替えをすることが出来ます。

環境

初期設定

下記のパッケージをインストールします。

$ 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}
$ 

使い方

使うときには、ディレクトリに移動するだけです。

direnvVIRTUAL_ENVPAHTが追加され、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は設定しても無視されてしまう...