はじめに
個人的なメモです。
更新していく予定です。
対象者
- python の環境をdevcontainer を使って作りたい人
使用したマシンについて
- macOS Monterey
- MacBook Pro
- Vscode ver 1.70.1
Pythonの開発環境を構築する
- ディレクトリ作成
- Dockerfile & devcontainer.json 作成
- poetry の追加, python 周辺の設定など
1.ディレクトリの作成
今回は, python-dev-template
と言う名称でディレクトリを作成しました。
github にも残しておこうと思うので, リポジトリの作成も行いました。
作成後, リポジトリの初期案内に沿ってREADME を作成しただけのリポジトリです。
2. Dockerfile & devcontainer.json 作成
Vscode の 拡張機能 devcontainer を使うため,Dockerfile
と devcontainer.json
を作成します。
.devcontainer
ディレクトリを作成して ディレクトリ内に以下の内容でDockerfile
と devcontainer.json
を追加していきます.
FROM python:3.11-slim-bullseye
RUN apt-get update && apt-get install -y \
git
{
"name": "Python 3.11 dev",
"context": "..",
"dockerFile": "Dockerfile",
"customizations": {
"vscode": {
"settings": {
"terminal.integrated.profiles.linux": {
"zsh": {
"path": "zsh"
}
},
"python.pythonPath": "/usr/local/bin/python"
},
"extensions": [
"ms-python.python",
"kevinrose.vsc-python-indent",
"editorconfig.editorconfig"
]
}
}
}
ここで devcontainerを起動してコンテナ内に入れることを確認したら, コミットしておきます。
差分を追いやすいように, PR出しました。
https://github.com/syokoysn/python-dev-template/pull/1
3. poetry の追加, python 周辺の設定など
poetry を使えるようにするため, Dockerfile に変更を入れます.
まず poetry の追加です.
以下のようにDockerfile
を書き換えて,devcontainer を再度 build しなおします。
FROM python:3.11-slim-bullseye
RUN apt-get update && apt-get install -y \
git
ENV PYTHONDONTWRITEBYTECODE 1 \
PYTHONUNBUFFERED 1 \
POETRY_VERSION=1.4.2
RUN apt-get update && apt-get install -y \
git \
curl
RUN curl -sSL https://install.python-poetry.org | POETRY_HOME=/opt/poetry python3 - && \
ln -s /opt/poetry/bin/poetry /usr/local/bin/poetry
立ち上げた後に,
poetry init
とコマンドを打って,いくつかの質問に答えてpyproject.toml
を作成します。
pyproject.toml
内のpackages
の部分は使わないので削除します。
以下の一行を削除
packages = [{include = "python_dev_template"}]
気になる方は, 以下のリンクで確認してみてください。
次に開発時に使用するパッケージをインストールします。
ここでは, black と flake8をインストールしました。
poetry add --group dev black flake8
上記のコマンド入力後, poetry.lock
が作成されているはずです。
pyproject.toml
と poetry.lock
の二つのファイルができたので,
コンテナ立ち上げ時に 必要なパッケージをインストールするように, Dockerfile
の更新も行います。
以下のように変更しました。
FROM python:3.11-slim-bullseye
RUN apt-get update && apt-get install -y \
git
ENV PYTHONDONTWRITEBYTECODE 1 \
PYTHONUNBUFFERED 1 \
POETRY_VERSION=1.4.2
RUN apt-get update && apt-get install -y \
git \
curl
RUN curl -sSL https://install.python-poetry.org | POETRY_HOME=/opt/poetry python3 - && \
ln -s /opt/poetry/bin/poetry /usr/local/bin/poetry
COPY pyproject.toml poetry.lock ./
RUN poetry config virtualenvs.create false \
&& poetry install
最後に, black
と flake8
のための設定を devcontainer に反映させるため変更をおこなっていきます。
devcontainer.json
を以下のように変更します。
{
"name": "Python 3.11 dev",
"context": "..",
"dockerFile": "Dockerfile",
"customizations": {
"vscode": {
"settings": {
"terminal.integrated.profiles.linux": {
"zsh": {
"path": "zsh"
}
},
"python.pythonPath": "/usr/local/bin/python",
"python.linting.enabled": true,
"python.linting.pylintEnabled": false,
"python.linting.flake8Enabled": true,
"python.linting.lintOnSave": true,
"python.formatting.provider": "black",
"editor.formatOnSave": true
},
"extensions": [
"ms-python.python",
"kevinrose.vsc-python-indent",
"editorconfig.editorconfig"
]
}
}
}
ここまでできたら, 再度 build し直して動くこと確認してコミットします。
変更内容は, PRにしてわかりやすくしておきました。
https://github.com/syokoysn/python-dev-template/pull/2
pythonの開発環境の構築ができたのではないでしょうか.
この内容に加えて、拡張機能などを追加したりして自分好みにカスタマイズできると思いますので是非試してみてください。
参考