PyPIに自作パッケージをアップロードする方法
PyPIに自作のPythonパッケージをアップロードする際の備忘録です。
基本的な流れとしては「twineでパッケージ作成 -> Test PyPIで動作確認 -> PyPIにアップロード」です。
アップロードしたいパッケージは既に用意できているのを前提とします。
事前準備
- Test PyPIとPyPIそれぞれでアカウントを作成
アップロード作業
基本的には以下の流れでやれば大丈夫です。ただしTest PyPIからのインストールは少し躓くのと注意が必要なので気をつけてください(理由後述)。そのため、個人的にはTest PyPIでの動作確認はスキップしてしまうのが楽だと思いますし、私自身はそうしています。
twine用の仮想環境用意
% Switch to your package directory
python3 -m venv .venv_pypi
source .venv_pypi/bin/activate
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade setuptools wheel twine配布物の作成
python setup.py bdist_wheel sdist
Test PyPIへのアップロードと確認(任意)
twine upload -r testpypi dist/*
deactivate
python3 -m venv .venv_test
source .venv_test/bin/activate
pip install -i https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple YOUR_PACKAGE_NAME
deactivatePyPIへのアップロード
source .venv_pypi/bin/activate
twine upload -r pypi dist/*
注意点
Test PyPI
前述した通り、Test PyPIからパッケージをインストールしようとする際にはいくつか躓くポイントがあります。
- Test PyPIに依存ライブラリが存在しない場合エラーが出る
- –extra-index-urlでPyPIを指定すればうまくいくこともあるが、このオプションをあまり理解せず利用すると危険であることも指摘されているので注意が必要
が主に挙げられます。
自作ライブラリに依存パッケージがそれなりにある場合は、これに対応するのがけっこう大変なので細心の注意を払ってテストなしで直接PyPIにアップロードしてしまうのが楽だったりします。
Pythonファイル(.py)以外をパッケージに含める方法
特に何も指定しない限りはsetup.pyでパッケージを作成する場合はPythonファイルしか含まれません。
しかしパケージに必要なファイルを含めたいときはけっこうあると思います。
その場合は関数setup()にてキーワード引数package_dataに指定すると追加することができます。
おわりに
自作ライブラリをPyPIに公開する機会があったので、自分が躓いた箇所も含めて備忘録としてまとめました。
慣れてしまえば作業自体は簡単ですが、ライブラリ自体のバージョン管理を適切にやることのほうが難しいなと思う今日このごろ。
それでは。
参照
PyPIに自作パッケージをアップロードする方法
https://sishida21.github.io/2022/12/17/upload-package-to-pypi/