我怎样才能从PIP混帐子目录安装?(How can I install from a git sub

2019-07-04 03:45发布

我有一个Git仓库有很多文件夹,其中之一是一个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'

Answer 1:

有一个拉请求,关于这个功能,它似乎已经合并到开发分支一个月前。 语法是如下 :

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

我们可能要等待一段时间,直到它被合并,以掌握和分布。

UPDATE:这是现已上市,在记录https://pip.readthedocs.io/en/stable/reference/pip_install/#vcs-support如下:

对于那些setup.py是不是在项目的根目录的项目,“子目录”组件使用。 “子目录”分量的值应该从项目到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中的双引号,否则你会得到一个错误“‘子目录’不被识别为一个内部或外部命令”。 例如,使用:

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


Answer 2:

它中已经陈述的意见,一个正确的答案下,但只是为了强调这个问题:从Linux命令行执行这个时候,你必须躲避&字符数限制,因为符号告诉命令行来在后台运行一个命令:

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

注意符号前的反斜杠。 逃逸行为可能依赖于Linux发行版; 我不是专家。
如果忽略这一点,你可能会遇到像下面这样的含义模糊的错误:

bash: (...) command not found


文章来源: How can I install from a git subdirectory with pip?
标签: python git pip