setup.py-style
setuptools(デフォルト)を使う場合、以下の形式で install ができます。
pip install "git+protocol://git.example.com/MyProject.git#egg=<project name>&subdirectory=<setup.pyがある階層までのパス>"
パラメータ の egg に関して
egg= is used by pip in its dependency logic to identify the project prior to pip downloading and analyzing the metadata.
pypaのドキュメントの上記説明だと具体的にどのように、何を指定すれば良いか分かりませんでしたが、以下の記事が役立ちました。
egg=(パッケージ名)は setup.py の中にある関数 setup(name=○○○, ...) の引数 name に渡される名称です。
パラメータ の subdirectory に関して
setup.pyがプロジェクトのルートにない場合に使います。
subdirectory を追加して、プロジェクトルートからのsetup.pyがある階層までのパスを指定する必要があります。
The value of the “subdirectory” component should be a path starting from the root of the project to where setup.py is located.
pyproject.toml にビルドツールを指定している場合 (PEP 517)
pyproject.toml にビルドツールを指定して install する場合のドキュメントを見つけられませんでした。しかし、suffix に egg を指定しない記法で install ができました。pipはpyproject.tomlを確認した際は指定のビルドツールを使ってくれるみたいです。
if a project specifies a different build system using a pyproject.toml file, as per PEP 517, pip will use that instead.
by https://pip.pypa.io/en/stable/reference/pip/
If a user wants to explicitly request PEP 517 handling even though a project doesn’t have a pyproject.toml file, this can be done using the --use-pep517 command line option.
by https://pip.pypa.io/en/stable/reference/pip/
pyproject.toml がプロジェクトルートにある場合
install に成功した自作サンプル↓
pip install git+https://github.com/nnashiki/wordcloud-cli
なお、build ツールには poetryを指定しています。
pyproject.toml がプロジェクトルートにない場合
install に成功した自作サンプル↓
pip install git+https://git@github.com/nnashiki/wordcloud_cli_training#subdirectory=wordcloud-cli-for-japanese
なお、build ツールには poetryを指定しています。
参考にしたドキュメント類
- https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support
- https://pip.pypa.io/en/stable/reference/pip_install/#examples
- https://qiita.com/tshimura/items/64603dfb8f0d6eb35992#pip-install-%E3%81%AE%E6%9B%B8%E3%81%8D%E6%96%B9
- http://orolog.hatenablog.jp/entry/2019/03/24/223531