ara*_*lli 7 python ssh pip github docker
我正在尝试构建一个 Docker 容器,该容器应该从 requests.txt 文件安装一系列 python 包。其中一个条目是托管在私有 GitHub 存储库上的 python 包。为了安装它,我创建了一对 SSH 密钥,并将公共密钥作为部署密钥添加到 GitHub 存储库。
\n但是,当我构建容器时,我收到此错误:
\nERROR: Command errored out with exit status 128: git clone -q 'ssh://****@github.com:organization/my-package' /tmp/pip-install-e81w4wri/my-package Check the logs for full command output.\nRun Code Online (Sandbox Code Playgroud)\n我尝试通过更改 docker 文件的 pip install 命令来调试错误,RUN git clone git@github.com:organization/my-package.git并且效果很好。
这个错误是什么意思以及如何解决它?我可以克隆它并使用专用命令安装它,但如果可能的话,我想将所有要求保留在一个地方。谢谢!
\n这是我正在使用的 Dockerfile:
\nFROM joyzoursky/python-chromedriver:3.7-alpine3.8 as base\n\nFROM base as builder\n\nRUN echo "http://dl-8.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories\nRUN apk --no-cache --update-cache add bash gcc gfortran build-base git wget freetype-dev libpng-dev openblas-dev openssh-client\nRUN ln -s /usr/include/locale.h /usr/include/xlocale.h\n\n# copy requirements\nRUN mkdir /install\nWORKDIR /install\nCOPY ./requirements.txt /var/www/requirements.txt\n\n###\xc2\xa0GITHUB SSH KEY ###\nCOPY ./keys/deploy_key_private .\nRUN mkdir /root/.ssh && mv deploy_key_private /root/.ssh/id_rsa\nRUN eval $(ssh-agent) && \\\n ssh-add /root/.ssh/id_rsa && \\\n ssh-keyscan -H github.com >> /etc/ssh/ssh_known_hosts\n\nRUN pip install --upgrade pip && pip install --prefix=/install -r /var/www/requirements.txt --log logs.txt\n\nFROM base\nCOPY --from=builder /install /usr/local\n# KEEP ON BUILDING THE CONTAINER\nRun Code Online (Sandbox Code Playgroud)\n该软件包列在requirements.txtas中git+ssh://git@github.com:organization/my-package@master#egg=my_package
如果相关,这里是 pip 的回溯:
\nException information:\n2020-07-30T11:56:55,329 Traceback (most recent call last):\n2020-07-30T11:56:55,329 File "/usr/local/lib/python3.7/site-packages/pip/_internal/cli/base_command.py", line 216, in _main\n2020-07-30T11:56:55,329 status = self.run(options, args)\n2020-07-30T11:56:55,329 File "/usr/local/lib/python3.7/site-packages/pip/_internal/cli/req_command.py", line 182, in wrapper\n2020-07-30T11:56:55,329 return func(self, options, args)\n2020-07-30T11:56:55,329 File "/usr/local/lib/python3.7/site-packages/pip/_internal/commands/install.py", line 325, in run\n2020-07-30T11:56:55,329 reqs, check_supported_wheels=not options.target_dir\n2020-07-30T11:56:55,329 File "/usr/local/lib/python3.7/site-packages/pip/_internal/resolution/legacy/resolver.py", line 183, in resolve\n2020-07-30T11:56:55,329 discovered_reqs.extend(self._resolve_one(requirement_set, req))\n2020-07-30T11:56:55,329 File "/usr/local/lib/python3.7/site-packages/pip/_internal/resolution/legacy/resolver.py", line 388, in _resolve_one\n2020-07-30T11:56:55,329 abstract_dist = self._get_abstract_dist_for(req_to_install)\n2020-07-30T11:56:55,329 File "/usr/local/lib/python3.7/site-packages/pip/_internal/resolution/legacy/resolver.py", line 340, in _get_abstract_dist_for\n2020-07-30T11:56:55,329 abstract_dist = self.preparer.prepare_linked_requirement(req)\n2020-07-30T11:56:55,329 File "/usr/local/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", line 469, in prepare_linked_requirement\n2020-07-30T11:56:55,329 hashes=self._get_linked_req_hashes(req)\n2020-07-30T11:56:55,329 File "/usr/local/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", line 239, in unpack_url\n2020-07-30T11:56:55,329 unpack_vcs_link(link, location)\n2020-07-30T11:56:55,329 File "/usr/local/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", line 99, in unpack_vcs_link\n2020-07-30T11:56:55,329 vcs_backend.unpack(location, url=hide_url(link.url))\n2020-07-30T11:56:55,329 File "/usr/local/lib/python3.7/site-packages/pip/_internal/vcs/versioncontrol.py", line 733, in unpack\n2020-07-30T11:56:55,329 self.obtain(location, url=url)\n2020-07-30T11:56:55,329 File "/usr/local/lib/python3.7/site-packages/pip/_internal/vcs/versioncontrol.py", line 641, in obtain\n2020-07-30T11:56:55,329 self.fetch_new(dest, url, rev_options)\n2020-07-30T11:56:55,329 File "/usr/local/lib/python3.7/site-packages/pip/_internal/vcs/git.py", line 230, in fetch_new\n2020-07-30T11:56:55,329 self.run_command(make_command('clone', '-q', url, dest))\n2020-07-30T11:56:55,329 File "/usr/local/lib/python3.7/site-packages/pip/_internal/vcs/versioncontrol.py", line 774, in run_command\n2020-07-30T11:56:55,329 log_failed_cmd=log_failed_cmd)\n2020-07-30T11:56:55,329 File "/usr/local/lib/python3.7/site-packages/pip/_internal/vcs/versioncontrol.py", line 166, in call_subprocess\n2020-07-30T11:56:55,329 raise SubProcessError(exc_msg)\n2020-07-30T11:56:55,329 pip._internal.exceptions.SubProcessError: Command errored out with exit status 128: git clone -q 'ssh://****@github.com:organization/my-package' /tmp/pip-install-e81w4wri/my-package Check the logs for full command output.\nRun Code Online (Sandbox Code Playgroud)\n
git@github.com:organization/my-package.git是有效的 SSH URL。
ssh://git@github.com:organization/my-package.git不是。
ssh://git@github.com/organization/my-package.git将会。
如此处所示,您可以添加GIT_SSH_COMMAND='ssh -v' pip install ...以查看到底发生了什么。
您可能需要:
git config --global url."ssh://git@github.com/".insteadOf ssh://git@github.com:
Run Code Online (Sandbox Code Playgroud)
OP arabinelli在评论中报告必须使用以下行requirements.txt:
git+ssh://git@github.com/my-organization/my-repo-name@master#egg=my_package_dir
Run Code Online (Sandbox Code Playgroud)
这对我来说适用于私有 BitBucket 存储库:
git+ssh://git@bitbucket.org/my-organization/my-repo-name@master#egg=my_project&subdirectory=subdir1Run Code Online (Sandbox Code Playgroud)^^^^^^^我必须指定子目录“
subdir1”