我正在创建一个包含以下内容的docker:
FROM debian:jessie
RUN sed -i '/jessie-updates/d' /etc/apt/sources.list # Now archived
RUN apt-get update && apt-get install -y python python-pip
打印以下内容
Setting up python-urllib3 (1.9.1-3+deb8u1) ...
Setting up python-pip (1.5.6-5) ...
在 docker 中,pip 因 urllib3 失败,提示“没有名为 ordered_dict 的模块”。urllib3 版本已知不受支持(这让我想知道为什么它处于“稳定”版本中。)
jeff@Builder:~$ python
Python 2.7.9 (default, Sep 14 2019, 20:00:08)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import urllib3
>>> urllib3.__version__
'1.25.9'
根据https://github.com/urllib3/urllib3/issues/1456。
我该如何创建一个不存在此问题的docker?
如何找出要安装哪个版本的 python-pip(或 python-urllib3)以避免这种情况?
最重要的是,下次我该如何自己解决这个问题?
请注意,这并不完全重复Pip 在 Linux 上无法运行,返回错误:“从 urllib3.packages.ordered_dict 导入 OrderedDict ImportError:没有名为 ordered_dict 的模块”,因为这有一个 repro 并且涉及 docker,并且那里的答案解决了使用旧版本的 urllib3 的问题,这不是这里的问题。
答案1
我好像误打误撞地给出了答案:apt-get install python-pip-whl
FROM debian:jessie
RUN sed -i '/jessie-updates/d' /etc/apt/sources.list # Now archived
RUN apt-get update && apt-get install -y python python-pip-whl python-pip
不知道为什么它有效。urllib3 的版本没有变化。如果有人可以发布更具启发性的答案,我会选择它。