pip无法在mac上的docker容器中安装软件包

时间:2017-07-13 13:28:43

标签: python macos docker pip

我正在遵循使用docker和python应用程序的Docker-getting started指南,但是当docker到达命令时:

RUN pip install -r requirements.txt

我收到以下错误消息:

Step 4/7 : RUN pip install -r requirements.txt
---> Running in 98e18cf80a64
Collecting Flask (from -r requirements.txt (line 1))
Retrying (Retry(total=0, connect=None, read=None, redirect=None)) 
after connection broken by 'NewConnectionError
('<pip._vendor.requests.packages.urllib3.connection.Ver
ifiedHTTPSConnection object at 0x7fb43609ccd0>: Failed to establish a 
new connection: [Errno 111] Connection refused',)': /simple/flask/

重复几次,然后出现:

Could not find a version that satisfies the requirement Flask (from -r 
requirements.txt (line 1)) (from versions: )
No matching distribution found for Flask (from -r requirements.txt 
(line 1))

The command '/bin/sh -c pip install -r requirements.txt' returned a 
non-zero code: 1

pip似乎在容器外工作正常。有什么办法可以让它上网吗?我已经为docker设置了代理,除了这个(到目前为止),一切似乎都运行正常。

所有相关问题都涉及ubuntu或windows,不适用于mac。

提前致谢。

2 个答案:

答案 0 :(得分:3)

我发现这是一个pip代理错误,并且能够通过将代理指定为pip install的参数来解决问题。所以而不是简单地拥有

#Install any needed packages specified in requirements.txt
RUN pip install -r requirements.txt

在我的Dockerfile中,我有

#Install any needed packages specified in requirements.txt
RUN pip install -r requirements.txt --proxy http(s)://proxy:8080 --trusted-host pypi.python.org

--proxy http(s)://proxy:8080指定pip使用的代理,--trusted-host pypi.python.org使pypi成为可信主机,以防遇到ssl证书错误(在企业环境中很常见)。

答案 1 :(得分:0)

唯一适用于我的解决方案是在我的Dockerfile中包含以下行:

RUN pip install <package name> -i <package URL>

而不是将其包含在我的requirements.txt中。

当它位于requirements.txt中时,我认为Docker不在查看软件包URL。