はじめに
Pythonを用いて,CLIアプリケーション作成を支援するパッケージを作ったので,その記録を残します.
❯❯❯ python3 -V
Python 3.9.7
必要なパッケージをインストールしておきます.
❯❯❯ pip3 install wheel twine
PyBundleCli
今回,私が作ったパッケージにPyBundleCli
と名前をつけました.
❯❯❯ pip3 install PyBundleCli
手順1 init
インストールができたら,初期設定をします.
❯❯❯ pybundle init
これは,~/.pybundle/config.json
作ります.
❯❯❯ pybundle config set git_account 'gitのアカウント'
この情報は後で作成するファイルに使用されます.
また,setup.py
に記載する情報を
❯❯❯ git config user.name
❯❯❯ git config user.email
で取得していますので,必要に応じて設定してください.
また,作成したアプリケーションをPyPIに登録してpipでインストールしたい人以下のステップも実行してください.
に登録してください.
そして,
❯❯❯ touch ~/.pypirc
お好きなエディタで,以下のように編集.
[distutils]
index-servers =
pypi
testpypi
[pypi]
repository: https://upload.pypi.org/legacy/
username: <username>
password: <password>
[testpypi]
repository: https://test.pypi.org/legacy/
username: <username>
password: <password>
それぞれのusernameとpasswordを編集してください.
手順2 プロジェクトを作成する
❯❯❯ pybundle new <project_name>
お好きなproject_nameで始めてください.
今回私は,myappp
という名前でデモをします.
❯❯❯ cd myapp
❯❯❯ tree -a
.
├── .gitignore
├── LICENSE
├── README.md
├── myapp
│ ├── __init__.py
│ └── myapp.py
└── setup.py
1 directory, 6 files
このようなディレクトリ構造で自動的に作成されます.
手順3 ローカルにインストール
動作確認を兼ねて,ローカルにインストールしてみましょう.
❯❯❯ python3 setup.py sdist
❯❯❯ pip3 install dist/myapp-0.0.1.tar.gz
myapp-0.0.1.tar.gz
というバージョン0.0.1の圧縮ファイルが作成され,それをpipでインストールしています.
バージョンを上げる際は,myapp/__init__.py
を編集してください.
コマンドを叩いてみましょう.
❯❯❯ myapp
Hello, world!
無事に動いていますね!
たった,これだけで自分専用のCLIコマンドができました.
もちろん,Hello, world!
と返ってくるだけのアプリは必要ありません.
編集するファイルは,myapp/myapp.py
のmain functionです.
これは,setup.py
の
entry_points={
"console_scripts": [
"myapp = myapp.myapp:main"
]
},
で定義しているので,必要に応じて編集してください.
また,左辺はコマンド名になるので,ここも編集可能です.
(オプション) pypiにアップロード
素晴らしいコマンドができたなら,世界に公開しましょう.
その前に,myappp
という名前は誰かが使ってしまっているでしょう.あなただけの一意な名前をつけましょう.
name='PyBundleCli',
ここを編集します.
また,ローカルにインストールした際の情報が邪魔をしますので,
❯❯❯ rm -rf dist/ myapp.egg-info/
で削除しましょう.
test版にアップロードして,確認します.この際に~/.pypirc
を参照しています.
❯❯❯ python3 setup.py sdist bdist_wheel
❯❯❯ python3 -m twine upload -r testpypi --vorbose
うまくいけば,本番環境にあげましょう.
❯❯❯ python3 -m twine upload -r pypi --vorbose
おめでとうございます!あなたの素晴らしいアプリが世界に公開されました!
これで,pipでインストールできるようになります.
ローカルインストール,アップロードの自動化
ローカルにインストールする際や,アップロードする際のコマンドを覚えるの大変ですよね.
これもコマンド化しました!!
❯❯❯ git clone git@github.com:kyohei-horikawa/pypi.git
一意な名前が思いつかなく,pypiにアップしていないので,gitからcloneしてください.
ローカルにインストールしましょう.この煩わしい作業もこれが最後です.
❯❯❯ cd pypi
❯❯❯ python3 setup.py sdist
❯❯❯ pip3 install dist/*.tar.gz
使い方
ローカルインストール
❯❯❯ pypi local
pypiにアップロード
❯❯❯ pypi upload [pypi|testpypi]