🐈

VSCode のdevcontainerで作る python 環境

2023/07/15に公開

この記事を書いた動機

m1 macで 気軽に scikit-learnを installしようとしたら, 公式document にもあるように, 色々と面倒だということがわかった.

VSCodeと devcontainerとpoetryで notebookやpython scriptを実行できる環境を作りたい.

VSCode のdevcontainerで作る お手軽なpython環境

  • pythonのversionは用途に合わせて選ぶ, poetry と必要なoptionの設定はbuildした後に実行されるようにshell scriptで記載しておく.
.devcontainer/devcontainer.json
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/python
{
	"name": "Python 3",
	// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
	"image": "mcr.microsoft.com/devcontainers/python:1-3.10-bullseye",
	// Use 'postCreateCommand' to run commands after the container is created.
	"postCreateCommand": "./.devcontainer/postCreateCommand.sh"
}
.devcontainer/postCreateCommand.sh
pip install poetry
poetry config virtualenvs.in-project true --local
  • もしも変更する前にvenvを作成した場合は一旦仮想環境を削除する必要がある.
poetry env list
# poetry-hogehoge
poetry env remove poetry-hogehoge

Poetryのインストールと仮想環境作成先の変更

poetry env info

でpathを確認するとlocalに変更されているはず

  • jupyter はdev container を起動した際にinstallする. imageをre-buildする場合, 再度 installする必要があるかも.

  • poetry のconfigが変更されているか確認する. virtualenvs.in-project=true が重要でworkspace以下に .venv/を作成するかのoptionで defaultでは trueになっていない.

poetry config --list
virtualenvs.create = true
virtualenvs.in-project = true
  • .venvが 初期設定で globalに作成されていた場合, 一旦作成した環境を削除して再度 poetryをinstallすると workspace/{hoge}/.venv が作成される. Poetry の virtualenv を VSCode に認識させるの記事を参考にした.
poetry --version
poetry env remove 3.10  # 既存の virtualenv を削除。指定する Python バージョンは適宜調整
poetry install
  • jupyter のinstallを行い, workspace/{hoge}/.venv が作られていれば kernelとして選択できる. あとは必要なpackageを poetry addで追加していけば pythonお手軽環境が作れる.
poetry add lightgbm

Discussion