この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
こんにちは!たぬきうどんです!
私は2018年に非IT業界から未経験でエンジニアに転職し、現在までエンジニアとして働いています。
この記事ではPython + Docker + Poetry開発環境の構築方法について書いています。
Dockerを使用することで、環境を汚染することなくPython + Poetry環境を構築できるので、Docker環境でPython + Poetryを使ってみたいと思っている方はぜひご覧ください!
Poetryとは
PoetryはPythonのパッケージ管理ツールです。
Poetryを使用することでプロジェクトが依存しているライブラリの管理が楽になります。
環境構築方法
環境
今回の実行環境&エディタは下記です。
- Windows OS
- Docker
- Visual Studio Code
また、下記のVisual Studio Codeの拡張を使用します。
- Remote-Containers(
ms-vscode-remote.remote-containers
) - Python(
ms-python.python
) - Pylance(
ms-python.vscode-pylance
)
1.Dockerfile作成
まず、Dockerfile
を作成しましょう。
FROM python:3.9-buster
RUN apt-get update &&\
apt-get -y install locales &&\
localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8
ENV TZ JST-9
ENV TERM xterm
RUN pip install --upgrade pip
RUN curl -sSL https://install.python-poetry.org | python -
ENV PATH /root/.local/bin:$PATH
Poetryはcurl -sSL https://install.python-poetry.org | python -
でインストールするようにします。
インストール後にはENV PATH /root/.local/bin:$PATH
にて環境変数PATH
にPoetryのパスを設定しておきます。
また、仮想環境については実行環境がコンテナ環境であるため特に必要がありません。
poetry config virtualenvs.create false
をコンテナ内で実行するようにしておき、Poetryが仮想環境を作成しないようにしておきましょう。
2.コンテナを起動し、コンテナ内に入る
それではコンテナを起動しましょう。
上記のDockerfile
を起点にRemote-Containersを使用して、コンテナを起動しましょう。
VS Codeのステータスバー左部にある緑の><
のところを押して、
Reopen in Container
を選択。
From 'Dockerfile'
を選択します。
コンテナのビルド&起動に成功すれば、VS Codeのステータス左部が
に変わり、コンテナ内に入ります。
また、作業フォルダ下にコンテナ内のVS Codeの設定ファイルである.devcontaine/devcontainer.json
が作成されます。
3.プロジェクトの初期化
それではプロジェクトを初期化します。
今回はexample-app
というプロジェクト名で初期化します。
以下のコマンドを実行します。
$ poetry new example-app
初期化に成功すると以下のようなプロジェクトが生成されます。
example-app
├── pyproject.toml
├── README.rst
├── example-app
│ └── __init__.py
└── tests
├── __init__.py
└── test_example_app.py
パッケージを入れたい場合は作業ディレクトリをexample-app
を移し、
poetry add 入れたいパッケージ名
で入れることができます。
4.拡張機能のインストールとVS Codeの設定
続いてVS Codeの拡張機能をイントールします。
前述したPython用の拡張機能とPylanceをコンテナ内にインストールしてください。
インストールが終了したら、拡張機能等の適応をするためにVS Codeの左下部の緑の部分を押下し、Rebuild Container
を選択し、VS Codeの再読み込みしましょう。
拡張機能のインストールが終了したら、Pylanceの設定をしておきます。
ルートディレクトリに.vscode
ディレクトリを作成し、その下にsettings.json
ファイルを作成します。
作成が終了したら、以下の設定を定義します。
{
"python.analysis.typeCheckingMode": "strict",
"python.analysis.extraPaths": [
"/path/to/poetry/cache/virtualenvs/test-example-py3.10/lib/python3.10/site-packages"
],
"python.languageServer": "Pylance"
}
"python.analysis.typeCheckingMode": "strict"
とすることで厳格な型チェックをするようにします。
また、インポートしたモジュールのパス解決のためにpython.analysis.extraPaths
でインポート先を明示的に定義しておきます。
インポート先の確認方法はpoetry env info
コマンドを使用し、仮想環境の場所を確認します。
実行結果は下記の例のとおりになります。
$ poetry env info
Virtualenv
Python: 3.10.1
Implementation: CPython
Path: /path/to/poetry/cache/virtualenvs/test-example-py3.10
Valid: True
Base
Platform: darwin
OS: posix
Python: /path/to/main/python
Path
項目のパスの下層にlib/python3.10/site-packages
があると思うので、確認してください。
このディレクトリがパッケージのインストール先になりますので、"python.analysis.extraPaths"
に定義してImport解決できるようにしておきます。
また、上記の設定はワークスペースのみが影響範囲となっていますが、コンテナ全体に設定を適応させたい場合は.devcontaine/devcontainer.json
のsettings
内に上記の設定を定義します。
以上でPython + Docker + Poetry開発環境の構築は終了です。
お疲れ様でした!
さいごに
以上がPython + Docker + Poetry開発環境構築方法でした。
Dockerを使用することで、環境を汚すことなくPython + Poetry実行環境が構築できます。
「Poetryを更に知りたい!」というかたは公式のドキュメントを見てみてください。
この記事が皆さんの助けになれば幸いです!
最後まで読んでいただき、ありがとうございました!