构建Docker镜像时遇ModuleNotFoundError: No module named 'zlib'问题求助
解决Docker构建时zlib缺失的问题
你的问题根源是编译Python 3.9时缺少zlib系统开发依赖,导致Python没有内置zlib模块,pip运行时无法处理压缩数据,所以报错。pip install zlib无效是因为zlib不是PyPI上的Python包,它是系统级底层库。
解决方法很简单,修改Dockerfile,在安装系统依赖的步骤中添加zlib-devel:
修改后的Dockerfile:
# 4. docker build -t my-layer . # 5. docker run --name my-container my-layer # 6. docker cp my-container:/opt/python-3.9.6/aws-layer/my-layer.zip . # Your Layer is ready. FROM amazonlinux:latest # 添加zlib-devel到系统依赖安装列表 RUN yum install gcc openssl-devel bzip2-devel libffi-devel gzip make zlib-devel -y RUN yum install wget tar zip -y WORKDIR /opt RUN wget https://www.python.org/ftp/python/3.9.6/Python-3.9.6.tgz RUN tar xzf Python-3.9.6.tgz COPY requirements.txt /opt/Python-3.9.6/requirements.txt WORKDIR /opt/Python-3.9.6 RUN ./configure --enable-optimizations RUN make altinstall RUN rm -f /opt/Python-3.9.6.tgz RUN mkdir -p aws-layer/python/lib/python3.9/site-packages RUN pip3.9 install -r requirements.txt -t aws-layer/python/lib/python3.9/site-packages RUN cd aws-layer && zip -r9 my-layer.zip .
说明:
zlib-devel是Amazon Linux下zlib库的开发包,包含编译Python所需的头文件和静态库,添加后Python编译过程会自动内置zlib模块。- 不需要在Windows主机上执行任何命令,所有修改都在Dockerfile里完成,Docker构建时会在容器内部安装依赖,和主机系统无关。
内容的提问来源于stack exchange,提问作者arame3333
相关产品推荐
相关产品推荐

