This error comes from running the dockerfile and reaches the PyQt5 in the requirements-dev.txt. From stackoverflow, this problem occur when installing PyQt5 with version after 5.15.6 in virtual environment.
Not labeling bug as it's bug from PyQt5, but since this could affect dockerfile building I'll create this issue. If this is not proper please close this issue.
Reference: https://stackoverflow.com/questions/70936664/metadata-generation-failed-while-installing-pyqt5
Comment From: rhshadrach
Thanks for the report!
Not labeling bug as it's bug from PyQt5, but since this could affect dockerfile building I'll create this issue.
Could or does affect the Dockerfile? The issue you linked to seems to all refer to Mac OS and Windows, but our Dockerfile is based on Ubuntu.
Comment From: PenguinPen
Could or does affect the Dockerfile? The issue you linked to seems to all refer to Mac OS and Windows, but our Dockerfile is based on Ubuntu.
I encountered this issue when I run the docker file in the python virtual environment, and I am on Mac.
Error message:
Comment From: rhshadrach
Thanks - further investigations into workarounds are welcome!
Comment From: surenpoghosian
@PenguinPen This happened to me while trying to build it on a mac with an M chip. Even if you resolve the problem with PyQt, further issues will arise with a number of other packages.
Use the commands below, in order to build the docker image with correct platform specifications:
build your image with the modified command below (forcing amd64 architecture)
- docker build --platform=linux/amd64 --no-cache -t pandas-dev .
this runs the previously built image and moves you inside the running container
- docker run -it --rm -v ${PWD}:/home/pandas pandas-dev
these will install all the required dependencies
- pip install -r /tmp/requirements-dev.txt
- pip install --no-build-isolation -v -e .
Comment From: surenpoghosian
@rhshadrach I think this is worth highlighting in the documentation. If it's good, we can add it during our upcoming PyData Yerevan Sprint.
Comment From: tihanayo
take
Comment From: Alvaro-Kothe
I was able to reproduce the metadata error by building on arm64:
$ podman build --arch arm64 -t pandas-dev .
...
× Preparing metadata (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [26 lines of output]
pyproject.toml: line 14: the legacy use of 'license' is deprecated and will be removed in SIP v7.0.0, use an SPDX license expression and 'license-files' instead
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 389, in <module>
main()
File "/usr/local/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 373, 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 178, in prepare_metadata_for_build_wheel
whl_basename = backend.build_wheel(metadata_directory, config_settings)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/pip-build-env-qlq5n86k/overlay/lib/python3.11/site-packages/sipbuild/api.py", line 28, in build_wheel
project = AbstractProject.bootstrap('wheel',
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/pip-build-env-qlq5n86k/overlay/lib/python3.11/site-packages/sipbuild/abstract_project.py", line 74, in bootstrap
project.setup(pyproject, tool, tool_description)
File "/tmp/pip-build-env-qlq5n86k/overlay/lib/python3.11/site-packages/sipbuild/project.py", line 633, in setup
self.apply_user_defaults(tool)
File "/tmp/pip-install-ahiw9q75/pyqt5_5a4e88b4618a41cd87f69941315c2630/project.py", line 68, in apply_user_defaults
super().apply_user_defaults(tool)
File "/tmp/pip-build-env-qlq5n86k/overlay/lib/python3.11/site-packages/pyqtbuild/project.py", line 51, in apply_user_defaults
super().apply_user_defaults(tool)
File "/tmp/pip-build-env-qlq5n86k/overlay/lib/python3.11/site-packages/sipbuild/project.py", line 243, in apply_user_defaults
self.builder.apply_user_defaults(tool)
File "/tmp/pip-build-env-qlq5n86k/overlay/lib/python3.11/site-packages/pyqtbuild/builder.py", line 49, 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
I also managed to build by using PyQt6 instead of PyQt5, but it needs further investigation. I believe that either upgrading to PyQt6 or finding a compatible PyQt5 version is preferable than relying on emulation.
Also, here is the result of pip freeze from the container:
accessible-pygments==0.0.5
adbc-driver-manager==1.7.0
adbc-driver-postgresql==1.7.0
adbc-driver-sqlite==1.7.0
aiobotocore==2.24.1
aiohappyeyeballs==2.6.1
aiohttp==3.12.15
aioitertools==0.12.0
aiosignal==1.4.0
alabaster==1.0.0
annotated-types==0.7.0
anyio==4.10.0
argon2-cffi==25.1.0
argon2-cffi-bindings==25.1.0
arrow==1.3.0
asttokens==3.0.0
asv==0.6.4
asv_runner==0.2.1
async-lru==2.0.5
attrs==25.3.0
babel==2.17.0
beautifulsoup4==4.13.4
bleach==6.2.0
blosc2==3.7.2
boto3==1.39.11
botocore==1.39.11
Bottleneck==1.5.0
build==1.3.0
cachetools==5.5.2
certifi==2025.8.3
cffi==1.17.1
cfgv==3.4.0
charset-normalizer==3.4.3
click==8.2.1
cloudpickle==3.1.1
comm==0.2.3
contourpy==1.3.3
coverage==7.10.4
cramjam==2.11.0
cryptography==45.0.6
cycler==0.12.1
Cython==3.1.3
dask==2025.7.0
debugpy==1.8.16
decorator==5.2.1
defusedxml==0.7.1
distlib==0.4.0
docutils==0.21.2
doit==0.36.0
et_xmlfile==2.0.0
execnet==2.1.1
executing==2.2.0
fastjsonschema==2.21.2
fastparquet==2024.11.0
feedparser==6.0.11
filelock==3.19.1
flake8==7.1.0
fonttools==4.59.1
fqdn==1.5.1
frozenlist==1.7.0
fsspec==2025.7.0
gcsfs==2025.7.0
gitdb==4.0.12
GitPython==3.1.45
google-api-core==2.25.1
google-auth==2.40.3
google-auth-oauthlib==1.2.2
google-cloud-core==2.4.3
google-cloud-storage==3.3.0
google-crc32c==1.7.1
google-resumable-media==2.7.2
googleapis-common-protos==1.70.0
greenlet==3.2.4
h11==0.16.0
html5lib==1.1
httpcore==1.0.9
httpx==0.28.1
hypothesis==6.138.2
identify==2.6.13
idna==3.10
imagesize==1.4.1
importlib_metadata==8.7.0
importlib_resources==6.5.2
iniconfig==2.1.0
ipykernel==6.30.1
ipython==9.4.0
ipython_pygments_lexers==1.1.1
ipywidgets==8.1.7
isoduration==20.11.0
jedi==0.19.2
Jinja2==3.1.6
jmespath==1.0.1
json5==0.12.1
jsonpointer==3.0.0
jsonschema==4.25.1
jsonschema-specifications==2025.4.1
jupyter-events==0.12.0
jupyter-lsp==2.2.6
jupyter_client==8.6.3
jupyter_core==5.8.1
jupyter_server==2.17.0
jupyter_server_terminals==0.5.3
jupyterlab==4.4.6
jupyterlab_pygments==0.3.0
jupyterlab_server==2.27.3
jupyterlab_widgets==3.0.15
jupyterlite-core==0.6.4
jupyterlite-pyodide-kernel==0.6.1
kiwisolver==1.4.9
lark==1.2.2
llvmlite==0.44.0
locket==1.0.0
lxml==6.0.1
Markdown==3.8.2
markdown-it-py==4.0.0
MarkupSafe==3.0.2
matplotlib==3.10.5
matplotlib-inline==0.1.7
mccabe==0.7.0
mdurl==0.1.2
meson==1.2.1
meson-python==0.13.1
mistune==3.1.3
mmh3==5.2.0
moto==5.1.10
msgpack==1.1.1
multidict==6.6.4
mypy==1.13.0
mypy_extensions==1.1.0
narwhals==2.1.2
natsort==8.4.0
nbclient==0.10.2
nbconvert==7.16.6
nbformat==5.10.4
nbsphinx==0.9.7
ndindex==1.10.0
nest-asyncio==1.6.0
ninja==1.13.0
nodeenv==1.9.1
notebook==7.4.5
notebook_shim==0.2.4
numba==0.61.2
numexpr==2.11.0
numpy==2.2.6
numpydoc==1.9.0
oauthlib==3.3.1
odfpy==1.4.1
openpyxl==3.1.5
overrides==7.7.0
packaging==25.0
pandas==2.3.2
pandoc==2.4
pandocfilters==1.5.1
parso==0.8.4
partd==1.4.2
pexpect==4.9.0
pickleshare==0.7.5
pillow==11.3.0
pkginfo==1.12.1.2
platformdirs==4.3.8
pluggy==1.6.0
plumbum==1.9.0
ply==3.11
pre_commit==4.3.0
prometheus_client==0.22.1
prompt_toolkit==3.0.51
propcache==0.3.2
proto-plus==1.26.1
protobuf==6.32.0
psutil==7.0.0
psycopg2-binary==2.9.10
ptyprocess==0.7.0
pure_eval==0.2.3
py-cpuinfo==9.0.0
pyarrow==21.0.0
pyasn1==0.6.1
pyasn1_modules==0.4.2
pycodestyle==2.12.1
pycparser==2.22
pydantic==2.11.7
pydantic_core==2.33.2
pydata-sphinx-theme==0.16.0
pyflakes==3.2.0
Pygments==2.19.2
pyiceberg==0.9.1
Pympler==1.1
PyMySQL==1.1.1
pyparsing==3.2.3
pyproject-metadata==0.9.1
pyproject_hooks==1.2.0
PyQt6==6.9.1
PyQt6-Qt6==6.9.1
PyQt6_sip==13.10.2
pyreadstat==1.3.1
pytest==8.4.1
pytest-cov==6.2.1
pytest-cython==0.3.1
pytest-localserver==0.9.0.post0
pytest-qt==4.5.0
pytest-xdist==3.8.0
python-calamine==0.4.0
python-dateutil==2.9.0.post0
python-json-logger==3.3.0
pytz==2025.2
pyxlsb==1.0.10
PyYAML==6.0.2
pyzmq==27.0.2
referencing==0.36.2
requests==2.32.5
requests-oauthlib==2.0.0
responses==0.25.8
rfc3339-validator==0.1.4
rfc3986-validator==0.1.1
rfc3987-syntax==1.1.0
rich==13.9.4
rpds-py==0.27.0
rsa==4.9.1
s3fs==2025.7.0
s3transfer==0.13.1
scipy==1.16.1
seaborn==0.13.2
Send2Trash==1.8.3
sgmllib3k==1.0.0
six==1.17.0
smmap==5.0.2
sniffio==1.3.1
snowballstemmer==3.0.1
sortedcontainers==2.4.0
soupsieve==2.7
Sphinx==8.1.3
sphinx-copybutton==0.5.2
sphinx_design==0.6.1
sphinxcontrib-applehelp==2.0.0
sphinxcontrib-devhelp==2.0.0
sphinxcontrib-htmlhelp==2.1.0
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==2.0.0
sphinxcontrib-serializinghtml==2.0.0
SQLAlchemy==2.0.43
stack-data==0.6.3
strictyaml==1.7.3
tables==3.10.2
tabulate==0.9.0
tenacity==9.1.2
terminado==0.18.1
tinycss2==1.4.0
tokenize_rt==6.2.0
toolz==1.0.0
tornado==6.5.2
traitlets==5.14.3
types-PyMySQL==1.1.0.20250822
types-python-dateutil==2.9.0.20250822
types-pytz==2025.2.0.20250809
types-PyYAML==6.0.12.20250822
types-setuptools==80.9.0.20250822
typing-inspection==0.4.1
typing_extensions==4.14.1
tzdata==2025.2
uri-template==1.3.0
urllib3==2.5.0
versioneer==0.29
virtualenv==20.34.0
wcwidth==0.2.13
webcolors==24.11.1
webencodings==0.5.1
websocket-client==1.8.0
Werkzeug==3.1.3
widgetsnbextension==4.0.14
wrapt==1.17.3
xarray==2025.8.0
xlrd==2.0.2
xlsxwriter==3.2.5
xmltodict==0.14.2
yarl==1.20.1
zipp==3.23.0
zstandard==0.24.0