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を通しておけばよい。