Pythonプロジェクトの作成(Python 3.11, pyenv + Poetry, VSCode)
バージョン情報
定義・ディレクトリ構成
説明のため、プロジェクトディレクトリ名my_project
、パッケージ名my-project
、主要なモジュール名my_project
とします。
以下のようなディレクトリ構成にすることを想定しています。
- my_project/- pyproject.toml- Dockerfile- my_project/- __init__.py- my_module.py- scripts/- __init__.py- main.py- tests/- __init__.py- test_my_module.py
Python/Poetryのインストール
pyenvでPythonをインストールします。
記事作成時点で最新のリビジョン(0.0.x
)を記載していますが、適宜新しいバージョンが出ているか確認し、
更新してください。
マイナーバージョン(0.x.0
)を変更する場合、依存する予定のライブラリが動作するかなど、プロジェクトの要件と相談してください。
env PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install 3.11.5
PYTHON_CONFIGURE_OPTS="--enable-shared"
は、PyInstallerが動作するようにするために設定しています。
Poetryをインストールします。
# Linux, macOS, WSLcurl -sSL https://install.python-poetry.org | python3 -# Windows (PowerShell)(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -
Poetryプロジェクトの作成
Poetryのグローバル設定を変更し、Python仮想環境がプロジェクトのディレクトリ/.venv
に作成されるようにします。
これは、VSCode拡張機能のPylanceがPython仮想環境を認識できるようにする、または手動で設定しやすくするための変更です。
poetry config virtualenvs.in-project true
プロジェクトディレクトリmy_project
を作成し、作業ディレクトリにします。
mkdir my_projectcd my_project
pyenvのPythonバージョン指定ファイル.python-version
を作成します。
pyenv local 3.11.5
現在のディレクトリにPoetryプロジェクトを作成します。
対話形式でプロジェクトの設定(pyproject.toml
の作成)をします。
poetry init
パッケージ名には、以下の文字が使用できます。
- ラテン文字(A-Z、大文字・小文字は区別されない)
- アラビア数字(0-9)
- ピリオド、アンダースコア、ハイフン(これらは区別されない、先頭または末尾に使用できない)
パッケージ名の仕様について、記事作成時点では以下が参考になります。
- パッケージ名に関するPyPA仕様
- パッケージ名の正規化に関するPyPA仕様
- PEP 566 – Metadata for Python Software Packages 2.1
- PEP 508 – Dependency specification for Python Software Packages
(おすすめ)依存ライブラリを聞かれますが、個人的には、操作がややこしく間違ったライブラリをインストールしてしまうのが怖いので、いったんスキップして後で設定することが多いです。
GitHubの.gitignore
テンプレートをプロジェクトディレクトリにコピーします。
(おすすめ).gitignore
を編集し、pyenvのPythonバージョン指定ファイル.python-version
をGit管理から除外します。
.python-version
はPythonバージョンをリビジョンまで固定するため、以下のようなケースで
完全に一致したバージョンのPythonをそれぞれインストールすることになり、不便になります。
- 複数の開発者がいる
- 複数の開発環境がある(コンピュータ、OS、仮想環境)
- 複数のPythonプロジェクトがある
# pyenv# For a library or package, you might want to ignore these files since the code is# intended to run in multiple environments; otherwise, check them in:.python-version
主要なドキュメントREADME.md
、主要なモジュールのディレクトリmy_project/
、ファイルmy_project/__init__.py
を作成します。
これらのファイルは、プロジェクトに対してPoetryを動作させるために必要です(Poetry実行時にファイルが存在しない旨のエラーが出ます)。
echo "# my_project" > README.mdmkdir my_projecttouch my_project/__init__.py
ローカルGitリポジトリを作成します。 名前、メールアドレスは適宜変更してください。 GitホスティングサービスとしてGitHubを使っていて、メールアドレスを公開したくない場合、 設定ペ ージに記載されているダミーのメールアドレスが利用できます。
- GitHub Email settings
Keep my email addresses private
の項目を参照
git initgit config user.name "John Doe"git config user.email "mail@example.com"git commit -m "Initial Commit" --allow-empty