PythonでCLIツールを作ってPyPIに公開せずにpipでインストールする
PythonでCLIツールを作って、PyPIにパッケージ公開せずにpipでインストールして使う方法です。
ディレクトリ、ファル構成
プロジェクトディレクトリ直下にsetup.py
を追加します。さらにモジュールディレクトリを作り、そこに __init__.py
と本体main.py
を起きます。
- project
- module
+ __init__.py
+ main.py
+ setup.py
こんな感じになります。
必要に応じてプロジェクトディレクトリ直下に.gitignore
README.md
LICENSE
も追加します。
参考: https://github.com/dforest/openapi-redoc-schema-def
main.pyに処理を書く
main.pyに処理を実行するメソッドを書きます。
def main():
print("Hello World!")
setup.pyに設定を書く
setup.pyにpipでインストールするための設定を書きます。
from setuptools import setup
setup(
name='project name',
version='0.1.0',
# install_requres=['PyYAML'], 依存するライブラリ(必要な場合)
packages=["module"],
entry_points={
'console_scripts': [
"command_name=module.main:main"
]
}
)
module
は定義したモジュール名(今回は__init__.py
に何も書いてないのでディレクトリ名)、command_name
は実行したいコマンド名を入れます。
参考: https://github.com/dforest/openapi-redoc-schema-def/blob/main/setup.py
インストール
ローカルのソースコード
ローカルのソースコードをインストールする場合は、プロジェクトディレクトリ直下で以下コマンドを実行します。
pip install -e .
GitHubのソースコード
ローカルだとソースコードの場所を変えたり削除したりすると実行できなくなってしまうので、GitHubを経由したほうが管理が楽です。その場合はGitHubにソースコードを上げて、以下を実行します。
pip install git+{GitHubのリポジトリURL}
# pip install git+https://github.com/dforest/openapi-redoc-schema-def
インストールし直す
ソースコードを変えて、setup.pyのバージョンを上げずにインストールし直したい場合は--force-reinstall
オプションを付けます。
pip install --force-reinstall -e .
pip install --force-reinstall git+{GitHubのリポジトリURL}
2020-10-13 @walking_on_iceさんの指摘により pip install -I
-> pip install --force-reinstall
にコマンドを変更しました。
2020-10-20 @えんぶんさんの指摘により 公開せずにPyPIでインストールする
-> PyPIに公開せずにpipでインストールする
にタイトルおよび本文を変更しました。
Discussion
インストールし直すには”--ignore-installed”がよくない場合があります。例えば、Gitからファイル削除された時に、それを実行しでも、古いファイルが残ります。"--force-reinstall"がいいかもしれません。
確かにおっしゃる通りですね!ご指摘ありがとうございます。修正しました!
"pipでインストール" なのでは?🤔
pipとPyPIを混同していました!ご指摘ありがとうございます。
修正しました!