VS Code で pipenv (旧:pyenv + venv)

旧記事の内容:pyenvとvenvにvs codeを対応させる

改訂版記事の内容:pipenvを使って実質pyenv + virtualenvを使う

 

vs codeというよりはpipenvの紹介記事ですね

 

pipenv : pythonの仮想環境管理

https://pipenv-ja.readthedocs.io/ja/translate-ja/

 

pyenv : python自身のバージョン管理

github.com

この2つを組み合わせると、python 2.x, 3.xの複数バージョンの管理に加え、プロジェクトに応じて必要なだけnumpyなどのパッケージの有無とそのバージョンを管理できるようになる

 

利点

  1. そもそもシステムが利用しているpython環境を弄ると碌なことがない(とくにpipのupgradeをするとマズい)ので、仮想環境は必須
  2. インストールが容易 (pipで導入可能)
  3. pyenvを導入すれば、python自身のバージョン使い分けが可能
  4. 仮想環境ごとに必要なパッケージとそのバージョンをpipfileへ記録するので、他の作業環境への移行が楽

 

vs code側で行うこと

プロジェクトとして開いたファイルの最上位ディレクトリにpipfileが含まれていれば、vscodeが勝手に認識してくれます。左下に <pythonのバージョン> (virtualenv) となれば成功

 

 

VS Codeが結構よさ気だったので導入した。

ただし何も設定しないでvenvを使うには、いちいち source activateしなければならない。

これは本当にめんどくさいので設定をいじってみた。

 

pyenv については

github.comgit clone して パスをとおしてあげればよい。

pyenv install で 好みのpythonのバージョンをインストールすることができる。

pyenv global (バージョン名) で普段使いのpythonのバージョンを指定できる。

pyenv global でPythonのバージョンを決めたら以下に移る。

 

 

ここでは、「pyenvで作ったPythonのバージョン」、かつ「更にそのバージョンのvenvコマンドで作った仮想環境」を用いたい、VS Codeのプロジェクトのファイル階層を、 ~/VSCode/project0 と仮定する。

 

まずはvenvの作成。project0 以下に作成する。

python -m venv ~/VSCode/project0/venv

ここで、仮想環境を作成するフォルダ名をvenvとしたのは、あとの設定で面倒なことを起こさないようにするため。

プロジェクトごとに仮想環境を用意すれば、仮想環境の名前を区別してあげる必要はない。

 

以下を参照。

code.visualstudio.com

VS Codeで何らかのフォルダを開くと、同じディレクトリ階層に.vscodeというフォルダが生成される。

その中に、settings.jsonというファイルがある。

このファイルを開いて表示される、左右分割されたウィンドウの右側に、

"python.pythonPath" : <ゴニョゴニョ>

と表示されているはず。

これを

"python.pythonPath" : "${workspaceRoot}/venv/bin/python"

 と書きなおしてあげる。

${workspaceRoot} は現在開いて作業しているファイル階層を示す変数であるので、

どのようなフォルダを開いても、(/venv と名のついたフォルダ内にある、) venv 仮想環境を参照してくれるようになる。