You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

构建Docker镜像执行pip3 install pyyaml时出现ImportError错误求助

问题

使用以下Dockerfile构建TensorFlow镜像时出现pip3运行错误,移除pip3 install pyyaml命令后镜像可正常构建,当前环境为Python 3.5:

FROM tensorflow/tensorflow:1.6.0-devel-gpu-py3
COPY ./home/ /home/
RUN mkdir /usr/java \
&& cp -r /home/SySeVR/softdir/jdk1.8.0_161 /usr/java \
&& mkdir /usr/ant \
&& cp -r /home/SySeVR/softdir/apache-ant-1.9.14 /usr/ant \
&& rm -rf /etc/apt/sources.list \
&& cp -r /home/SySeVR/softdir/sources.list /etc/apt/ \
&& rm -rf /etc/apt/sources.list.d \
&& apt-get clean \
&& apt-get update \
&& rm -rf /etc/profile \
&& cp -r /home/SySeVR/softdir/profile /etc \
&& cd /home/SySeVR/softdir \
&& chmod +x env.sh \
&& ./env.sh \
&& apt-get install -y python-setuptools \
&& apt-get install -y python-dev \
&& apt-get install -y python-pip \
&& cd /home/SySeVR/softdir/py2neo-py2neo-2.0 \
&& python2 setup.py install \
&& cd /home/SySeVR/softdir/python-joern-0.3.1 \
&& python2 setup.py install \
&& apt-get install -y graphviz \
&& apt-get install -y libgraphviz-dev \
&& apt-get install -y pkg-config \
&& apt-get install -y python-igraph \
&& apt-get install -y python-virtualenv \
&& pip3 install xlrd \
&& pip3 install gensim==3.4 \
&& pip3 install pyyaml \
&& rm -rf /home/SySeVR/softdir

错误日志

Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/certifi/core.py", line 14, in
from importlib.resources import path as get_path, read_text
ImportError: No module named 'importlib.resources'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/pip3", line 7, in <module>
    from pip import main
  File "/usr/local/lib/python3.5/dist-packages/pip/__init__.py", line 21, in <module>
    from pip._vendor.requests.packages.urllib3.exceptions import DependencyWarning
  File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/requests/__init__.py", line 65, in <module>
    from . import utils
  File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/requests/utils.py", line 22, in <module>
    from . import certs
  File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/requests/certs.py", line 17, in <module>
    from certifi import where
  File "/usr/local/lib/python3.5/dist-packages/certifi/__init__.py", line 1, in <module>
    from .core import contents, where
  File "/usr/local/lib/python3.5/dist-packages/certifi/core.py", line 46, in <module>
    Resource = Union[str, "os.PathLike"]
  File "/usr/lib/python3.5/typing.py", line 552, in __getitem__
    dict(self.__dict__), parameters, _root=True)
  File "/usr/lib/python3.5/typing.py", line 512, in __new__
    for t2 in all_params - {t1} if not isinstance(t2, TypeVar)):
  File "/usr/lib/python3.5/typing.py", line 512, in <genexpr>
    for t2 in all_params - {t1} if not isinstance(t2, TypeVar)):
  File "/usr/lib/python3.5/typing.py", line 190, in __subclasscheck__
    self._eval_type(globalns, localns)
  File "/usr/lib/python3.5/typing.py", line 177, in _eval_type
    eval(self.__forward_code__, globalns, localns),
  File "<string>", line 1, in <module>
AttributeError: module 'os' has no attribute 'PathLike'
解决方法

错误根源是Python 3.5已不再被新版本pip、certifi和pyyaml支持,需要做以下调整:

1. 降级pip到兼容Python 3.5的版本

Python 3.5支持的最后一个pip版本是20.3.4,先执行降级:

pip3 install pip==20.3.4

2. 安装兼容Python 3.5的pyyaml版本

pyyaml 5.4.1是支持Python 3.5的最后一个稳定版本,指定版本安装:

pip3 install pyyaml==5.4.1

修改后的Dockerfile相关片段

将原来的:

&& pip3 install xlrd \
&& pip3 install gensim==3.4 \
&& pip3 install pyyaml \

替换为:

&& pip3 install xlrd \
&& pip3 install gensim==3.4 \
&& pip3 install pip==20.3.4 \
&& pip3 install pyyaml==5.4.1 \

这样修改后,就能正常完成镜像构建,同时保留pyyaml的安装。

内容的提问来源于stack exchange,提问作者Tasnim Fabiha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 09:35:17