PyPI リリースと依存関係に関する問題解決(開発日記 No.104)
関連リンク
はじめに
昨日は CI パイプラインのテンプレート適用不具合を修正し、本日はオープンなプルリクエスト #10 のレビューとマージ、そして PyPI へのリリース作業を行います。しかし、リリース作業中にいくつかの問題が発生しました。
背景と目的
プルリクエスト #10 は、google-generativeai
の依存関係を追加し、API キーのエラーメッセージを改善するものです。このプルリクエストをマージし、新しいバージョンとして PyPI にリリースすることで、アプリケーションの安定性とユーザビリティを向上させることを目指します。
検討内容
まず、プルリクエスト #10 を確認し、main
ブランチにマージしました。その後、GitHub でのリリース作業と PyPI への公開を計画しました。バージョン番号を 1.0.1
から 1.1.0
に上げ、タグを作成し、GitHub リリースを作成する予定でした。しかし、PyPI への公開が CI/CD パイプラインで失敗していることが判明しました。
失敗の原因を調査した結果、pyproject.toml
と setup.py
のバージョンが一致していないことが原因であることがわかりました。
実装内容
以下の手順で問題を修正しました。
-
pyproject.toml
ファイルのバージョンを1.0.1
から1.1.0
に更新。[project] name = "content-converter" - version = "1.0.1" + version = "1.1.0" description = "マークダウンファイルを各種公開プラットフォーム用に変換するツール" authors = [
-
setup.py
ファイルのバージョンを1.0.1
から1.1.0
に更新。setup( name="content-converter", - version="1.0.1", + version="1.1.0", author="Centervil", author_email="info@centervil.example.com",
-
変更をコミットし、
main
ブランチにプッシュ。git add pyproject.toml && git commit -m "fix: Update project version to 1.1.0 in pyproject.toml" git add setup.py && git commit -m "fix: Update project version to 1.1.0 in setup.py" git push origin main
-
既存の
v1.1.0
タグと GitHub リリースを削除し、再度タグとリリースを作成。git tag -d v1.1.0 git push origin --delete v1.1.0 git tag -a v1.1.0 -m "Release version 1.1.0" git push origin v1.1.0 gh release create v1.1.0 --title "Release v1.1.0" --notes "feat: Add google-generativeai dependency and improve API key error messages."
-
念のため、仮想環境を新しく作成し、そこに
content-converter
をインストールし、動作確認。python3 -m venv temp_venv temp_venv/bin/python -m ensurepip --upgrade temp_venv/bin/python -m pip install content-converter temp_venv/bin/python -m pip install google-generativeai # 明示的にインストール temp_venv/bin/python -m content_converter.cli --help
技術的なポイント
今回の実装で重要なポイントは、以下の点です。
-
pyproject.toml
とsetup.py
のバージョンを一致させること。 - 仮想環境に
google-generativeai
が正しくインストールされていることを確認すること。 - CLI ツールがモジュールとして実行されることを理解すること。
所感
今回の開発では、PyPI リリースプロセスの重要性と、依存関係の管理の難しさを改めて認識しました。特に、バージョン番号の不一致は、CI/CD パイプラインの自動化を妨げる大きな要因となることを学びました。また、仮想環境での動作確認は、リリース前の重要なステップであることを再認識しました。
今後の課題
今回の問題を踏まえ、以下の課題に取り組む必要があります。
- リリースプロセスの自動化とテストの強化。
- 依存関係の管理方法の見直し。
- ドキュメントの充実。
まとめ
今回の開発では、プルリクエスト #10 のマージ、GitHub リリースの作成、そして PyPI へのパッケージ公開という一連のタスクを完了しました。しかし、リリース作業中にバージョン番号の不一致という問題が発生し、解決に時間を要しました。この経験を活かし、今後の開発ではリリースプロセスの改善とテストの強化に努めます。また、今回の教訓をドキュメントに反映し、他の開発者も同様の問題に遭遇しないように努めます。
Discussion