Question: Here is my Dockerfile: FROM python:3.11-alpine AS app RUN apk update && apk add make automake gcc g++ subversion python3-dev gfortran openblas-dev RUN pip install --upgrade pip WORKDIR /srv  When I connect to my container and I launch: pip install pyqt5 I got error: $ pip install pyqt5 Collecting pyqt5 Using cached PyQt5-5.15.9.tar.gz (3.2 MB) Installing build dependencies ... done Getting requirements to build wheel ... done Preparing metadata (pyproject.toml) ... error error: subprocess-exited-with-error × Preparing metadata (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [25 lines of output] Traceback (most recent call last): File "/usr/local/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module> main() File "/usr/local/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main json_out['return_val'] = hook(**hook_input['kwargs']) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 152, in prepare_metadata_for_build_wheel whl_basename = backend.build_wheel(metadata_directory, config_settings) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/tmp/pip-build-env-z7am47sr/overlay/lib/python3.11/site-packages/sipbuild/api.py", line 46, in build_wheel project = AbstractProject.bootstrap('wheel', ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/tmp/pip-build-env-z7am47sr/overlay/lib/python3.11/site-packages/sipbuild/abstract_project.py", line 87, in bootstrap project.setup(pyproject, tool, tool_description) File "/tmp/pip-build-env-z7am47sr/overlay/lib/python3.11/site-packages/sipbuild/project.py", line 586, in setup self.apply_user_defaults(tool) File "/tmp/pip-install-p2ogfk1p/pyqt5_97a9414aa7ba410f9715856d348d62b4/project.py", line 68, in apply_user_defaults super().apply_user_defaults(tool) File "/tmp/pip-build-env-z7am47sr/overlay/lib/python3.11/site-packages/pyqtbuild/project.py", line 70, in apply_user_defaults super().apply_user_defaults(tool) File "/tmp/pip-build-env-z7am47sr/overlay/lib/python3.11/site-packages/sipbuild/project.py", line 237, in apply_user_defaults self.builder.apply_user_defaults(tool) File "/tmp/pip-build-env-z7am47sr/overlay/lib/python3.11/site-packages/pyqtbuild/builder.py", line 69, in apply_user_defaults raise PyProjectOptionException('qmake', sipbuild.pyproject.PyProjectOptionException [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. error: metadata-generation-failed × Encountered error while generating package metadata. ╰─> See above for output. note: This is an issue with the package mentioned above, not pip. hint: See above for details.  How to solve this ?

Answer: The PyQt5 Pypi project requires that qmake can be found (emphasis mine):  pip will also build and install the bindings from the sdist package but Qt’s qmake tool must be on PATH.  This can be done by installing e.g. qt5-qtbase-dev, potentially together with other packages. Then the qmake command can be found in the path. (If not, it can be added this way: export PATH=/usr/lib/qt5/bin:$PATH) So, this should work on the docker container: apk add qt5-qtbase-dev pip install --no-cache-dir pyqt5  (--no-cache-dir can save memory usage. But the installation is still quite long and memory intensive.) Honestly, I haven't managed to install this on my computer with 32GB RAM. The installation step is quite heavy under Alpine Docker and easily leads to OOM. Sadly, there are no pre-compiled sources available (at least not in pypi): https://pypi.org/project/PyQt5/#files pip install PyQt5-5.15.9-cp37-abi3-manylinux_2_17_x86_64.whl ERROR: PyQt5-5.15.9-cp37-abi3-manylinux_2_17_x86_64.whl is not a supported wheel on this platform.  If you do not find wheel files for Alpine from other locations and have not enough RAM to build yourself, I simply recommend not using Alpine Linux. Installation seems much simpler under Ubuntu and other distributions like e.g. Debian Bullseye: FROM python:3.11 AS app RUN apt update && apt install -y make automake gcc g++ subversion python3-dev gfortran libopenblas-dev RUN pip install --upgrade pip WORKDIR /srv  Then pip install pyqt5 is no problem.  Remark: I am not an expert for qmake. So it is possible that there are better ways instead of installation of qt5-qtbase-dev. But at least you will end having qmake available in the PATH.