如何使用pip从git子目录安装?

esyap4oy  于 2023-05-12  发布在  Git
关注(0)|答案(2)|浏览(175)

我有一个git仓库,里面有很多文件夹,其中一个是可以用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'
yyyllmsg

yyyllmsg1#

有一个关于这个特性的pull request,它似乎在一个月前被合并到开发分支。语法为following

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

我们可能需要等待一段时间,直到它被合并到master并被分发。

更新:现在可以在www.example.com上获得并记录https://pip.pypa.io/en/stable/cli/pip_install/#vcs-support如下:

对于setup.py不在项目根目录中的项目,使用“子目录”组件。“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"

注意:请务必用引号括起来,否则子目录无法使用。

olmpazwi

olmpazwi2#

在正确答案下面的一条评论中已经说明了这一点,但只是为了强调这个问题:当从Linux命令行执行此命令时,您必须**转义&-字符,因为与号指示命令行在后台运行命令:

git+https://git.repo/some_repo.git#egg=version_subpkg\&subdirectory=repo

请注意与符号前的反斜杠。转义行为可能取决于Linux发行版;我不是Maven
如果您忽略了这一点,您可能会遇到类似以下的神秘错误:

bash: (...) command not found

相关问题