我有一个包含许多文件夹的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/...
Run Code Online (Sandbox Code Playgroud)
现在我必须执行以下安装:
git clone http://server/repo.git
cd repo
pip install mymodule
cd ..
rm -rf repo
Run Code Online (Sandbox Code Playgroud)
是否可以直接使用pip安装模块而无需明确克隆?
我试过了:
pip install git+https://server/repo.git/mymodule/
pip install git+https://server/repo.git:mymodule/
Run Code Online (Sandbox Code Playgroud)
但我得到:
IOError: [Errno 2] No such file or directory: '/tmp/pip-88tlLm-build/setup.py'
Run Code Online (Sandbox Code Playgroud)
Den*_*zov 96
有一个关于此功能的拉取请求,似乎已经合并到一个月前开发分支.语法如下:
pip install -e git+https://git.repo/some_repo.git#egg=version_subpkg&subdirectory=repo # install a python package from a repo subdirectory
Run Code Online (Sandbox Code Playgroud)
我们可能需要等待一段时间,直到它合并为master并分发.
更新:现在可以在https://pip.readthedocs.io/en/stable/reference/pip_install/#vcs-support上找到并记录如下:
对于setup.py不在项目根目录中的项目,使用"子目录"组件."子目录"组件的值应该是从项目的根目录到setup.py所在的路径.
因此,如果您的存储库布局是:
Run Code Online (Sandbox Code Playgroud)- pkg_dir/ - setup.py # setup.py for package ``pkg`` - some_module.py - other_dir/ - some_file - some_other_file你需要使用
Run Code Online (Sandbox Code Playgroud)pip install -e vcs+protocol://repo_url/#egg=pkg&subdirectory=pkg_dir
注意:在Windows上,您必须将URL放在双引号中,否则您将收到错误"'子目录'未被识别为内部或外部命令".例如,使用:
Run Code Online (Sandbox Code Playgroud)pip install -e "vcs+protocol://repo_url#egg=pkg&subdirectory=pkg_dir"
rin*_*ahn 20
在正确答案的其中一条评论中已经说明了这一点,但只是为了强调这个问题:从Linux命令行执行此操作时,必须转义&字符,因为&符告诉命令行在后台运行命令:
git+https://git.repo/some_repo.git#egg=version_subpkg\&subdirectory=repo
Run Code Online (Sandbox Code Playgroud)
注意&符号之前的反斜杠.转义行为可能取决于Linux发行版; 我不是专家.
如果忽略这一点,您可能会遇到如下所述的神秘错误:
bash: (...) command not found
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20549 次 |
| 最近记录: |