私は大きなPython 3.7+プロジェクトを持っており、現在それを個別にインストールできる複数のパッケージに分割する過程にあります。私の最初の考えは、複数のパッケージを持つ単一のGitリポジトリを持つことでした、それぞれ独自のsetup.pyを持っています。しかし、Googleでいくつかの調査をしている間に、パッケージごとに1つのリポジトリを提案する人々を見つけました:(たとえば、 Python-setuptools-2つの依存パッケージでの作業( single repo?) )しかし、なぜそのような構造を好むのかについては、誰も良い説明をしていません。
だから、私の質問は次のとおりです:
また、setup.pyのGitHub URLがリポジトリのルートにない場合でも、setuptoolsがGitHubリポジトリから依存関係をインストールできるようになったことも知っています(間違っている場合は修正してください)。
同じ問題を自分で研究しています。 PyPaのドキュメントでは、次の「ネイティブ」サブディレクトリで説明されているレイアウトを推奨しています: https://github.com/pypa/sample-namespace-packages
以下で説明する単一のパッケージ構造は非常に便利です。「インストール済み」バージョンのテストに関する説明を参照してください。 https://blog.ionelmc.ro/2014/05/25/python-packaging/#the-structure これは複数のパッケージに拡張できると思います。詳細をお知らせします。
ここでは1つの側面について説明します https://pip.readthedocs.io/en/stable/reference/pip_install/#vcs-support
特に、setup.pyがルートディレクトリにない場合は、pip installコマンドでsetup.pyを見つけるサブディレクトリを指定する必要があります。
したがって、リポジトリのレイアウトが次の場合:
- pkg_dir /
- setup.py#パッケージpkgのsetup.py
- some_module.py
- other_dir /
- some_file
- some_other_file
Pip install -e vcs + protocol:// repo_url /#Egg = pkg&subdirectory = pkg_dirを使用する必要があります。