pip 错误“没有名为 ordered_dict 的模块”

pip 错误“没有名为 ordered_dict 的模块”

我正在创建一个包含以下内容的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 的版本没有变化。如果有人可以发布更具启发性的答案,我会选择它。

相关内容