astral-sh / ruff

An extremely fast Python linter and code formatter, written in Rust.
https://docs.astral.sh/ruff
MIT License
33.29k stars 1.11k forks source link

cannot resolve package in arm Mac Docker container when specifying platform #12722

Closed jbcpollak closed 3 months ago

jbcpollak commented 3 months ago

The below example is with a uv pip install but my actual usecase is trying to compile a cross-platform requirements.txt file using uv pip compile and a custom python script which runs the same compile three times, once for each platform, then normalizes them into a single file.

Anyway, here is what I am experiencing:

M3 Macbook Pro Python 3.11 UV 0.2.33

I am running a Linux devcontainer in Docker Desktop. At the command line I get this output when I ask Linux about its platform:

vscode ➜ /workspaces/firefly/vision (feat/tach-detection) $ uname -a
Linux de575a211720 6.10.0-linuxkit #1 SMP Wed Jul 17 10:51:09 UTC 2024 aarch64 GNU/Linux
vscode ➜ /workspaces/firefly/vision (feat/tach-detection) $ uname -m
aarch64
vscode ➜ /workspaces/firefly/vision (feat/tach-detection) $ uname -p
unknown

If I specify the --python-platform I get this:

vscode ➜ /workspaces/firefly/vision (feat/tach-detection) $ uv pip install open3d==0.18.0 --python-platform linux
  × No solution found when resolving dependencies:
  ╰─▶ Because open3d==0.18.0 has no wheels with a matching Python ABI tag and you require open3d==0.18.0, we can conclude that the requirements are unsatisfiable.

But if I don't specify the platform the install works ok:

vscode ➜ /workspaces/firefly/vision (feat/tach-detection) $ uv pip install open3d==0.18.0
Resolved 39 packages in 11ms
░░░░░░░░░░░░░░░░░░░░ [0/39] Installing wheels...                                                                                                                                                                                                                     warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance. If this is intentional, use `--link-mode=copy` to suppress this warning.

hint: If the cache and target directories are on different filesystems, hardlinking may not be supported.
Installed 39 packages in 4.21s
 + attrs==24.2.0
 + blinker==1.8.2
 + certifi==2024.7.4
 + charset-normalizer==3.3.2
 + click==8.1.7
 + configargparse==1.7
 + dash==2.17.1
 + dash-core-components==2.0.0
 + dash-html-components==2.0.0
 + dash-table==5.0.0
 + fastjsonschema==2.20.0
 + flask==3.0.3
 + idna==3.7
 + importlib-metadata==8.2.0
 + itsdangerous==2.2.0
 + jinja2==3.1.4
 + jsonschema==4.23.0
 + jsonschema-specifications==2023.12.1
 + jupyter-core==5.7.2
 + markupsafe==2.1.5
 + nbformat==5.10.4
 + nest-asyncio==1.6.0
 + numpy==2.0.1
 + open3d==0.18.0
 + packaging==24.1
 + platformdirs==4.2.2
 + plotly==5.23.0
 + referencing==0.35.1
 + requests==2.32.3
 + retrying==1.3.4
 + rpds-py==0.20.0
 + setuptools==72.1.0
 + six==1.16.0
 + tenacity==9.0.0
 + traitlets==5.14.3
 + typing-extensions==4.12.2
 + urllib3==2.2.2
 + werkzeug==3.0.3
 + zipp==3.19.2

Maybe I'm missing something, but I would expect the behavior to be the same regardless of the command-line switch since I'm running in a Linux container on Docker.

jbcpollak commented 3 months ago

apologies, I don't know how I managed to create this in the wrong repo. 🤦

charliermarsh commented 3 months ago

Hah, all good.