小ネタ集 (Tips written in Japanese)
以下の項目の解説は行わないのですが、検索すると直ぐに出てくると思いますので、必要に応じてご確認下さい。
    .  <--- 作業用フォルダ
    ├── README.md
    ├── build                   <-自動生成
    ├── dist                    <-自動生成
    ├── <package_name>
    │   ├── __init__.py
    │   └── __main__.py
    ├── <package_name>.egg-info <-自動生成
    ├── setup.cfg               <-作成
    └── setup.py                <-作成
    
    ~/.pypirc                   <-作成
.gitignore に以下を追加しておく。これらのフォルダ中のデータは作業後消去可能。build/
dist/
<package_name>.egg-info/
新たな version を追加する場合は(<package_name>.__version__ などを更新後に) 更新時に必要な手順を実行。
setup.py に以下のみを記載
 from setuptools import setup
 setup()
setup.cfg の作成
; はその後ろの条件が True の場合にのみその前のパッケージが必要となるという意味。
             install_requires =
     importlib; python_version == "2.6"
dist の作成に必要となるパッケージのインストール
 pip install twine wheel
PyPI テストサイトおよび本番サイトへのユーザ登録
登録コマンド省略するための設定
~/.pypirc に記載。 [distutils]
 index-servers =
     pypi
     testpypi
 [pypi]
 repository: https://upload.pypi.org/legacy/
 username:   <上記で登録したユーザ名>
 # password: <パスワードは記載しない>
 [testpypi]
 repository: https://test.pypi.org/legacy/
 username:   <上記で登録したユーザ名>
 # password: <パスワードは記載しない>
以下の更新時に必要な手順を実行
以下の手順の実行は、こちらの bash script を以下の引数で実行することでも可能です。
./pypi.sh <package_name> <package_ver>
soft と binary の dist を作成しチェック
以下のコマンドを実行
 python setup.py sdist bdist_wheel
 twine check ./dist/*
以下のように PASSED が表示されれば次に進む。
 Checking dist/<package_name>-<version>*: PASSED
テスト環境を作り、そこに上記 dist 下につくられたローカルパッケージをインストールしテスト
以下のコマンドにより 
  pip install --no-index --find-links=<上記でチェックしたdistへのPATH>/dist <package_name>==<version>
  ERROR: Could not find a version that satisfies the requirement scipy (from <package_name>)
  ERROR: No matching distribution found for scipy
install_requires = の下に1行づつ入れる。pip install --no-index --find-links= によるローカルフォルダからのパッケージインストールでは、install_requires = に記載したパッケージは自動インストールされないため、インストールしたパッケージの動作確認が終われば次に進む。pip list により意図する version の PyPI テストサイトへのアップロードとインストール
以下のコマンドで PyPI テストサイトへアップロード
  twine upload -r testpypi dist/<package_name>-<version>*
初期状態に戻したテスト環境(Python仮想環境)へ移動し、パッケージをダウンロードし動作をテスト
  pip uninstall <package_name>
  pip install -i https://test.pypi.org/simple/ <package_name>==<version>
PyPI 本番サイトへのアップロードとインストール
以下のコマンドで PyPI 本番サイトへアップロード
  twine upload -r pypi dist/<package_name>-<version>*
初期状態に戻したテスト環境(Python仮想環境)へ移動し、パッケージをダウンロードし動作をテスト
  pip uninstall <package_name>
  pip install <package_name>==<version>
PyPIに反映される前に
pip installを実行すると以下のようなエラーになる。その場合は、しばらく時間を置いてから再実行
  ERROR: No matching distribution found for <version>
Python       3.8.0
pip          21.3.1
setuptools   60.2.0
twine        3.4.1
wheel        0.35.1
Python       3.8.5
pip          21.0.1
setuptools   50.3.2
twine        3.4.1
wheel        0.35.1
最後までお読み頂きありがとうございます。 GitHubアカウントをお持ちでしたら、フォロー及び Star 頂ければと思います。リンクも歓迎です。