1. ホーム
  2. python

[解決済み] pipでgitのサブディレクトリからインストールするにはどうしたらいいですか?

2022-07-23 04:52:13

質問

私は多くのフォルダを持つgitリポジトリを持っています。そのうちの1つは、次のようにpipでインストール可能なpythonモジュールです。

repo.git/
repo.git/folder1/
repo.git/folder2/
repo.git/mymodule/
repo.git/mymodule/__init__.py
repo.git/mymodule/setup.py
repo.git/mymodule/...

今現在、インストールするために以下のことをしなければなりません。

git clone http://server/repo.git
cd repo
pip install mymodule
cd ..
rm -rf repo

明示的にクローンすることなく、pipで直接モジュールをインストールすることは可能でしょうか?

試してみました。

pip install git+https://server/repo.git/mymodule/
pip install git+https://server/repo.git:mymodule/

しかし、私は得る。

IOError: [Errno 2] No such file or directory: '/tmp/pip-88tlLm-build/setup.py'

どのように解決するのですか?

このページには プルリクエスト があり、一ヶ月前に develop ブランチにマージされたようです。構文としては に続く :

pip install -e git+https://git.repo/some_repo.git#egg=version_subpkg&subdirectory=repo # install a python package from a repo subdirectory

おそらく、masterにマージされて配布されるまで、しばらく待たなければならないでしょう。

UPDATE : これは現在、以下のサイトで公開されており、文書化されています。 https://pip.pypa.io/en/stable/cli/pip_install/#vcs-support を以下のように変更しました。

setup.pyがプロジェクトのルートにない場合。 subdirectory"コンポーネントが使用されます。subdirectory"コンポーネントの値は、プロジェクトのルートから始まるパスである必要があります。 の値は、プロジェクトのルートから setup.py がある場所へのパスである必要があります。 が配置されている場所への、プロジェクトのルートから始まるパスでなければなりません。

ですから、もしあなたのリポジトリのレイアウトが

- pkg_dir/
  - setup.py  # setup.py for package ``pkg``
  - some_module.py
- other_dir/
  - some_file
- some_other_file

を使用する必要があります。

pip install -e vcs+protocol://repo_url/#egg=pkg&subdirectory=pkg_dir

注意: Windows では、URLを二重引用符で囲む必要があります。そうしないと、エラー "'subdirectory' is not recognized as an internal or external command" が表示されます。例:使用する。

pip install -e "vcs+protocol://repo_url#egg=pkg&subdirectory=pkg_dir"