pyenv, virtualenv つかわずdockerで環境をきりはなす
プロジェクトごとにpythonのバージョンやインストールするmoduleが違う場合、
開発環境の構築にはpyenv, virtualenv つかうのが一般的(?)な解決策だと思う。
python歴1ヶ月なのでわからんが。
しかしpyenv, virtualenv つかうより
プロジェクトごとにdockerで開発環境つくるほうがわかりよいと思ったので
試してみた。
基本的には開発用に立ち上げたコンテナ内でpythonを動かすだけだが。
pythonのバージョンをきりはなす
各バージョンのイメージのコンテナ用意するだけ
moduleを切り離す
自分はプロジェクトごとに開発環境となるコンテナ郡を管理する
docker-compose.ymlを用意する。
そしてdocker-compose.ymlにpythonのアプリとかが動くコンテナを定義するわけだが
pythonが動くコンテナに以下のような設定を加えておく。
python:
volumes:
- ./packages:/root/.local/lib/python2.7/site-packages
目的は
pip install
は --user
をつけると ~/.local/
にインストールされるので
pip
でインストールしたmodule
がコンテナを消しても残るようにするためである。
なんで通常のsite-packages
ではなく ~/.local/
かというと
通常のsite-packages
とホストを同期するとイメージに最初から入っている
pipとかが使えなくなるから。
pythonでの開発にvimとjedi-vim使う場合はsys.pathにこのpackagesを通しておけばよい。