简体   繁体   中英

Python pip Install failing with ModuleNotFoundError: No module named 'pyexpat' error

Complete Docker file: https://github.com/docker-library/python/blob/master/3.8/bullseye/Dockerfile Docker file:

'''

ENV PYTHON_PIP_VERSION 22.0.4
#https://github.com/docker-library/python/issues/365
ENV PYTHON_SETUPTOOLS_VERSION 57.5.0
#https://github.com/pypa/get-pip
ENV PYTHON_GET_PIP_URL https://github.com/pypa/get-pip/raw/aeca83c7ba7f9cdfd681103c4dcbf0214f6d742e/public/get-pip.py
ENV PYTHON_GET_PIP_SHA256 d0b5909f3ab32dae9d115aa68a4b763529823ad5589c56af15cf816fca2773d6

RUN set -eux; 
    wget -O get-pip.py "$PYTHON_GET_PIP_URL"; 
    echo "$PYTHON_GET_PIP_SHA256 *get-pip.py" | sha256sum -c -; \
    export PYTHONDONTWRITEBYTECODE=1; \
    python get-pip.py \
        --disable-pip-version-check \
        --no-cache-dir \
        --no-compile \
        "pip==$PYTHON_PIP_VERSION" \
        "setuptools==$PYTHON_SETUPTOOLS_VERSION" ;\
        rm -f get-pip.py; \
        pip --version

''' Error: '''

>     python get-pip.py --disable-pip-version-check --no-cache-dir --no-compile pip==22.0.4 setuptools==57.5.0
>     Traceback (most recent call last):
>         File "get-pip.py", line 32098, in <module>
>         main()
>         File "get-pip.py", line 135, in main
>         bootstrap(tmpdir=tmpdir)
>     File "get-pip.py", line 111, in bootstrap
>         monkeypatch_for_cert(tmpdir)
>     File "get-pip.py", line 92, in monkeypatch_for_cert
>         from pip._internal.commands.install import InstallCommand
>     File "<frozen zipimport>", line 259, in load_module
>     File "/tmp/tmpiqi24qri/pip.zip/pip/_internal/commands/install.py", line 16, in <module>
>     File "<frozen zipimport>", line 259, in load_module
>     File "/tmp/tmpiqi24qri/pip.zip/pip/_internal/cli/req_command.py", line 21, in <module>
>     File "<frozen zipimport>", line 259, in load_module
>     File "/tmp/tmpiqi24qri/pip.zip/pip/_internal/index/package_finder.py", line
> 33, in <module>
>     File "<frozen zipimport>", line 259, in load_module
>     File "/tmp/tmpiqi24qri/pip.zip/pip/_internal/req/__init__.py", line 8, in <module>
>     File "<frozen zipimport>", line 259, in load_module
>     File "/tmp/tmpiqi24qri/pip.zip/pip/_internal/req/req_install.py", line 42, in <module>
>     File "<frozen zipimport>", line 259, in load_module
>     File "/tmp/tmpiqi24qri/pip.zip/pip/_internal/operations/install/wheel.py",
> line 39, in <module>
>     File "<frozen zipimport>", line 259, in load_module
>     File "/tmp/tmpiqi24qri/pip.zip/pip/_vendor/distlib/scripts.py", line 16, in <module>
>     File "<frozen zipimport>", line 259, in load_module
>     File "/tmp/tmpiqi24qri/pip.zip/pip/_vendor/distlib/compat.py", line 83, in <module>
>     File "/usr/local/lib/python3.8/xmlrpc/client.py", line 138, in <module>
>         from xml.parsers import expat
>     File "/usr/local/lib/python3.8/xml/parsers/expat.py", line 4, in <module>
>         from pyexpat import *
>     ModuleNotFoundError: No module named 'pyexpat'

''' Trying to add python 3.8 to my custom image. I could install python 3.8.13. I am adding above lines to docker file to install pip but getting above error of 'pyexpat' module missing.

How do I add this module, do I have to install some package at OS level?

You need to install expat-dev package before running get-pip.py

RUN \
    set -eu; \
    apk update --no-cache; \
    apk add --no-cache \
        expat-dev \
        ;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM