LoginSignup
1
0

More than 1 year has passed since last update.

PythonでCLIアプリケーションを作る

Last updated at Posted at 2022-05-11

はじめに

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

お好きなエディタで,以下のように編集.

~/.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

setup.py
entry_points={
        "console_scripts": [
            "myapp = myapp.myapp:main"
        ]
    },

で定義しているので,必要に応じて編集してください.
また,左辺はコマンド名になるので,ここも編集可能です.

(オプション) pypiにアップロード

素晴らしいコマンドができたなら,世界に公開しましょう.

その前に,myapppという名前は誰かが使ってしまっているでしょう.あなただけの一意な名前をつけましょう.

setup.py
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]
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0