pip install via requirements.txt 指定一个直接的 GitHub 私有仓库 + 分支名称出错,退出状态为 128
pip install via requirements.txt specify a direct GitHub private repo + branch name erroring with exit status 128
我正在尝试将一个包添加到我的 requirements.txt
文件中,即:
- 来自私人 GitHub 回购
- 我是私人仓库的成员
- 我已经
ssh
配置了私人仓库
- 来自
master
以外的分支,其名称中有一个斜杠
- 使用
ssh
协议
网上到处都是关于这个话题的问题。这是关于此的 pip
docs:
pip install -e "vcs+protocol://repo_url/#egg=pkg&subdirectory=pkg_dir"
GitHub 的答案来自 How to state in requirements.txt a direct github source
git+git://github.com/path/to/package-two@master#egg=package-two
尝试方法 #1
我正在尝试在我的 requirements.txt
文件中使用这个答案:
-e git+ssh://github.com/Organization/repo-name.git@branch/name#egg=foo
我收到一个错误:
ERROR: Command errored out with exit status 128: git clone -q ssh://github.com/Organization/repo-name.git /path/to/venv/src/foo Check the logs for full command output.
当我使用 --log
选项查看日志时:
Using pip 20.2 from /path/to/venv/lib/python3.8/site-packages/pip (python 3.8)
Non-user install because user site-packages disabled
Created temporary directory: /private/var/folders/yl/tnzf__856m90wwx0jrqwmhbw0000gn/T/pip-ephem-wheel-cache-yysggsvl
Created temporary directory: /private/var/folders/yl/tnzf__856m90wwx0jrqwmhbw0000gn/T/pip-req-tracker-ckqzav7i
Initialized build tracking at /private/var/folders/yl/tnzf__856m90wwx0jrqwmhbw0000gn/T/pip-req-tracker-ckqzav7i
Created build tracker: /private/var/folders/yl/tnzf__856m90wwx0jrqwmhbw0000gn/T/pip-req-tracker-ckqzav7i
Entered build tracker: /private/var/folders/yl/tnzf__856m90wwx0jrqwmhbw0000gn/T/pip-req-tracker-ckqzav7i
Created temporary directory: /private/var/folders/yl/tnzf__856m90wwx0jrqwmhbw0000gn/T/pip-install-c9xw78wg
Looking in indexes: https://pypi.org/simple
Obtaining foo from git+ssh://github.com/Organization/repo-name.git@branch/name#egg=foo (from -r requirements.txt (line 6))
Cloning ssh://github.com/Organization/repo-name.git (to revision branch/name) to ./venv/src/foo
ERROR: Command errored out with exit status 128: git clone -q ssh://github.com/Organization/repo-name.git /path/to/venv/src/foo Check the logs for full command output.
Exception information:
Traceback (most recent call last):
File "/path/to/venv/lib/python3.8/site-packages/pip/_internal/cli/base_command.py", line 216, in _main
status = self.run(options, args)
File "/path/to/venv/lib/python3.8/site-packages/pip/_internal/cli/req_command.py", line 182, in wrapper
return func(self, options, args)
File "/path/to/venv/lib/python3.8/site-packages/pip/_internal/commands/install.py", line 324, in run
requirement_set = resolver.resolve(
File "/path/to/venv/lib/python3.8/site-packages/pip/_internal/resolution/legacy/resolver.py", line 183, in resolve
discovered_reqs.extend(self._resolve_one(requirement_set, req))
File "/path/to/venv/lib/python3.8/site-packages/pip/_internal/resolution/legacy/resolver.py", line 388, in _resolve_one
abstract_dist = self._get_abstract_dist_for(req_to_install)
File "/path/to/venv/lib/python3.8/site-packages/pip/_internal/resolution/legacy/resolver.py", line 326, in _get_abstract_dist_for
return self.preparer.prepare_editable_requirement(req)
File "/path/to/venv/lib/python3.8/site-packages/pip/_internal/operations/prepare.py", line 523, in prepare_editable_requirement
req.update_editable(not self._download_should_save)
File "/path/to/venv/lib/python3.8/site-packages/pip/_internal/req/req_install.py", line 664, in update_editable
vcs_backend.obtain(self.source_dir, url=hidden_url)
File "/path/to/venv/lib/python3.8/site-packages/pip/_internal/vcs/versioncontrol.py", line 641, in obtain
self.fetch_new(dest, url, rev_options)
File "/path/to/venv/lib/python3.8/site-packages/pip/_internal/vcs/git.py", line 230, in fetch_new
self.run_command(make_command('clone', '-q', url, dest))
File "/path/to/venv/lib/python3.8/site-packages/pip/_internal/vcs/versioncontrol.py", line 771, in run_command
return call_subprocess(cmd, cwd,
File "/path/to/venv/lib/python3.8/site-packages/pip/_internal/vcs/versioncontrol.py", line 166, in call_subprocess
raise SubProcessError(exc_msg)
pip._internal.exceptions.SubProcessError: Command errored out with exit status 128: git clone -q ssh://github.com/Organization/repo-name.git /path/to/venv/src/foo Check the logs for full command output.
Removed build tracker: '/private/var/folders/yl/tnzf__856m90wwx0jrqwmhbw0000gn/T/pip-req-tracker-ckqzav7i'
尝试方法 #2
另一种方法我尝试 requirements.txt
:
-e git+git@github.com:Organization/repo-name.git#egg=foo
这里的克隆真的有效!它还打印此警告:DEPRECATION: This form of VCS requirement is being deprecated
不幸的是,我不知道如何用这种格式指定分支名称。
我做错了什么?我错过了什么吗?
仅供参考,我的版本:
Python==3.8.5
pip==20.2
setuptools==47.1.0
我在这两种情况下都解决了我的问题...语法
尝试 #1
错误:需要说git@github.com
正确方法:
-e git+ssh://git@github.com/Organization/repo-name.git@branch/name#egg=foo
尝试 #2
错误:不知道可以使用@
两次
正确方法:
-e git+git@github.com:Organization/repo-name.git@branch/name#egg=foo
我 运行 遇到了同样的问题,下面是我如何让它工作的:
按照有关如何安装私有 Python 软件包的文档:
我在这里创建了一个 Github 令牌 https://github.com/settings/tokens。
在我的 requirements.txt
我添加了:
-e git+https://GITHUB_TOKEN_HERE@github.com/user/repository.git#egg=your_module_name
我正在尝试将一个包添加到我的 requirements.txt
文件中,即:
- 来自私人 GitHub 回购
- 我是私人仓库的成员
- 我已经
ssh
配置了私人仓库
- 来自
master
以外的分支,其名称中有一个斜杠 - 使用
ssh
协议
网上到处都是关于这个话题的问题。这是关于此的 pip
docs:
pip install -e "vcs+protocol://repo_url/#egg=pkg&subdirectory=pkg_dir"
GitHub 的答案来自 How to state in requirements.txt a direct github source
git+git://github.com/path/to/package-two@master#egg=package-two
尝试方法 #1
我正在尝试在我的 requirements.txt
文件中使用这个答案:
-e git+ssh://github.com/Organization/repo-name.git@branch/name#egg=foo
我收到一个错误:
ERROR: Command errored out with exit status 128: git clone -q ssh://github.com/Organization/repo-name.git /path/to/venv/src/foo Check the logs for full command output.
当我使用 --log
选项查看日志时:
Using pip 20.2 from /path/to/venv/lib/python3.8/site-packages/pip (python 3.8)
Non-user install because user site-packages disabled
Created temporary directory: /private/var/folders/yl/tnzf__856m90wwx0jrqwmhbw0000gn/T/pip-ephem-wheel-cache-yysggsvl
Created temporary directory: /private/var/folders/yl/tnzf__856m90wwx0jrqwmhbw0000gn/T/pip-req-tracker-ckqzav7i
Initialized build tracking at /private/var/folders/yl/tnzf__856m90wwx0jrqwmhbw0000gn/T/pip-req-tracker-ckqzav7i
Created build tracker: /private/var/folders/yl/tnzf__856m90wwx0jrqwmhbw0000gn/T/pip-req-tracker-ckqzav7i
Entered build tracker: /private/var/folders/yl/tnzf__856m90wwx0jrqwmhbw0000gn/T/pip-req-tracker-ckqzav7i
Created temporary directory: /private/var/folders/yl/tnzf__856m90wwx0jrqwmhbw0000gn/T/pip-install-c9xw78wg
Looking in indexes: https://pypi.org/simple
Obtaining foo from git+ssh://github.com/Organization/repo-name.git@branch/name#egg=foo (from -r requirements.txt (line 6))
Cloning ssh://github.com/Organization/repo-name.git (to revision branch/name) to ./venv/src/foo
ERROR: Command errored out with exit status 128: git clone -q ssh://github.com/Organization/repo-name.git /path/to/venv/src/foo Check the logs for full command output.
Exception information:
Traceback (most recent call last):
File "/path/to/venv/lib/python3.8/site-packages/pip/_internal/cli/base_command.py", line 216, in _main
status = self.run(options, args)
File "/path/to/venv/lib/python3.8/site-packages/pip/_internal/cli/req_command.py", line 182, in wrapper
return func(self, options, args)
File "/path/to/venv/lib/python3.8/site-packages/pip/_internal/commands/install.py", line 324, in run
requirement_set = resolver.resolve(
File "/path/to/venv/lib/python3.8/site-packages/pip/_internal/resolution/legacy/resolver.py", line 183, in resolve
discovered_reqs.extend(self._resolve_one(requirement_set, req))
File "/path/to/venv/lib/python3.8/site-packages/pip/_internal/resolution/legacy/resolver.py", line 388, in _resolve_one
abstract_dist = self._get_abstract_dist_for(req_to_install)
File "/path/to/venv/lib/python3.8/site-packages/pip/_internal/resolution/legacy/resolver.py", line 326, in _get_abstract_dist_for
return self.preparer.prepare_editable_requirement(req)
File "/path/to/venv/lib/python3.8/site-packages/pip/_internal/operations/prepare.py", line 523, in prepare_editable_requirement
req.update_editable(not self._download_should_save)
File "/path/to/venv/lib/python3.8/site-packages/pip/_internal/req/req_install.py", line 664, in update_editable
vcs_backend.obtain(self.source_dir, url=hidden_url)
File "/path/to/venv/lib/python3.8/site-packages/pip/_internal/vcs/versioncontrol.py", line 641, in obtain
self.fetch_new(dest, url, rev_options)
File "/path/to/venv/lib/python3.8/site-packages/pip/_internal/vcs/git.py", line 230, in fetch_new
self.run_command(make_command('clone', '-q', url, dest))
File "/path/to/venv/lib/python3.8/site-packages/pip/_internal/vcs/versioncontrol.py", line 771, in run_command
return call_subprocess(cmd, cwd,
File "/path/to/venv/lib/python3.8/site-packages/pip/_internal/vcs/versioncontrol.py", line 166, in call_subprocess
raise SubProcessError(exc_msg)
pip._internal.exceptions.SubProcessError: Command errored out with exit status 128: git clone -q ssh://github.com/Organization/repo-name.git /path/to/venv/src/foo Check the logs for full command output.
Removed build tracker: '/private/var/folders/yl/tnzf__856m90wwx0jrqwmhbw0000gn/T/pip-req-tracker-ckqzav7i'
尝试方法 #2
另一种方法我尝试 requirements.txt
:
-e git+git@github.com:Organization/repo-name.git#egg=foo
这里的克隆真的有效!它还打印此警告:DEPRECATION: This form of VCS requirement is being deprecated
不幸的是,我不知道如何用这种格式指定分支名称。
我做错了什么?我错过了什么吗?
仅供参考,我的版本:
Python==3.8.5
pip==20.2
setuptools==47.1.0
我在这两种情况下都解决了我的问题...语法
尝试 #1
错误:需要说git@github.com
正确方法:
-e git+ssh://git@github.com/Organization/repo-name.git@branch/name#egg=foo
尝试 #2
错误:不知道可以使用@
两次
正确方法:
-e git+git@github.com:Organization/repo-name.git@branch/name#egg=foo
我 运行 遇到了同样的问题,下面是我如何让它工作的:
按照有关如何安装私有 Python 软件包的文档:
我在这里创建了一个 Github 令牌 https://github.com/settings/tokens。
在我的 requirements.txt
我添加了:
-e git+https://GITHUB_TOKEN_HERE@github.com/user/repository.git#egg=your_module_name