セキュリティのため、API トークンを使用することを推奨します。
- PyPIにログイン後、アカウント設定から「API tokens」を選択
- 「Add API token」をクリック
- トークン名を入力し、スコープを選択(最初は「Entire account」でOK)
- トークンをコピーして安全に保管
ホームディレクトリに.pypircファイルを作成すると、認証情報を保存できます:
[distutils]
index-servers =
pypi
testpypi
[pypi]
username = __token__
password = pypi-AgEIcHlwaS5vcmcCJDU1NTU1NTU1LTU1NTUtNTU1NS01NTU1LTU1NTU1NTU1NTU1NQ...
[testpypi]
username = __token__
password = pypi-AgENdGVzdC5weXBpLm9yZwIkNTU1NTU1NTUtNTU1NS01NTU1LTU1NTUtNTU1NTU1NTU1NTU1...注意: .pypircファイルには機密情報が含まれるため、パーミッションを600に設定してください:
chmod 600 ~/.pypirc# ビルドツール
pip install build
# アップロードツール
pip install twine# プロジェクトのルートディレクトリで実行
python -m buildこれによりdist/ディレクトリに以下のファイルが作成されます:
pycefrizer-3.0.0.tar.gz(ソース配布物)pycefrizer-3.0.0-py3-none-any.whl(Wheel配布物)
# パッケージの内容を確認
tar -tzf dist/pycefrizer-3.0.0.tar.gz
# Wheelの内容を確認
unzip -l dist/pycefrizer-3.0.0-py3-none-any.whl
# パッケージの検証
twine check dist/*本番環境にアップロードする前に、TestPyPIでテストすることを強く推奨します。
# TestPyPIにアップロード
twine upload --repository testpypi dist/*プロンプトが表示されたら:
- Username:
__token__ - Password: TestPyPI用のAPIトークン
# 新しい仮想環境を作成
python -m venv test-env
source test-env/bin/activate # Windowsの場合: test-env\Scripts\activate
# TestPyPIからインストール
# 注: パッケージ名は実際にTestPyPIに公開した後に利用可能になります
pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ pycefrizer
# 動作確認
python -c "import pycefrizer; print(pycefrizer.__version__)"
pycefrizer --versionテストが成功したら、本番環境にアップロードします:
twine upload dist/*プロンプトが表示されたら:
- Username:
__token__ - Password: PyPI用のAPIトークン
# PyPIからインストール
# 注: パッケージ名は実際にPyPIに公開した後に利用可能になります
pip install pycefrizer
# パッケージページを確認
# https://pypi.org/project/pycefrizer/以下のファイルでバージョン番号を更新:
pyproject.tomlsetup.pypycefrizer/__init__.py
CHANGELOG.mdを作成/更新して変更内容を記録
rm -rf dist/ build/ *.egg-info/python -m build
twine upload dist/*-
パッケージ名が既に使用されている
- パッケージ名を変更する必要があります
pyproject.tomlとsetup.pyのnameフィールドを更新
-
認証エラー
- APIトークンが正しくコピーされているか確認
__token__をユーザー名として使用しているか確認
-
ファイルが含まれない
MANIFEST.inを確認pyproject.tomlのpackage-data設定を確認
-
APIトークンは環境変数で管理
export TWINE_USERNAME=__token__ export TWINE_PASSWORD=pypi-AgEIcHlwaS5vcmcCJDU1NTU1NTU1LTU1NTUtNTU1NS01NTU1LTU1NTU1NTU1NTU1NQ... twine upload dist/*
-
プロジェクトごとにスコープを限定したAPIトークンを使用
-
2要素認証を有効化