Running into this error while trying to install this plugin as per instructions...
❯ llm install llm-mlx
Collecting llm-mlx
Using cached llm_mlx-0.4-py3-none-any.whl.metadata (6.6 kB)
Requirement already satisfied: llm>=0.24 in ./.local/share/uv/tools/llm/lib/python3.13/site-packages (from llm-mlx) (0.26)
Collecting mlx-lm (from llm-mlx)
Using cached mlx_lm-0.24.1-py3-none-any.whl.metadata (10 kB)
Requirement already satisfied: click in ./.local/share/uv/tools/llm/lib/python3.13/site-packages (from llm>=0.24->llm-mlx) (8.2.1)
Requirement already satisfied: condense-json>=0.1.3 in ./.local/share/uv/tools/llm/lib/python3.13/site-packages (from llm>=0.24->llm-mlx) (0.1.3)
Requirement already satisfied: openai>=1.55.3 in ./.local/share/uv/tools/llm/lib/python3.13/site-packages (from llm>=0.24->llm-mlx) (1.82.1)
Requirement already satisfied: click-default-group>=1.2.3 in ./.local/share/uv/tools/llm/lib/python3.13/site-packages (from llm>=0.24->llm-mlx) (1.2.4)
Requirement already satisfied: sqlite-utils>=3.37 in ./.local/share/uv/tools/llm/lib/python3.13/site-packages (from llm>=0.24->llm-mlx) (3.38)
Requirement already satisfied: sqlite-migrate>=0.1a2 in ./.local/share/uv/tools/llm/lib/python3.13/site-packages (from llm>=0.24->llm-mlx) (0.1b0)
Requirement already satisfied: pydantic>=2.0.0 in ./.local/share/uv/tools/llm/lib/python3.13/site-packages (from llm>=0.24->llm-mlx) (2.11.5)
Requirement already satisfied: PyYAML in ./.local/share/uv/tools/llm/lib/python3.13/site-packages (from llm>=0.24->llm-mlx) (6.0.2)
Requirement already satisfied: pluggy in ./.local/share/uv/tools/llm/lib/python3.13/site-packages (from llm>=0.24->llm-mlx) (1.6.0)
Requirement already satisfied: python-ulid in ./.local/share/uv/tools/llm/lib/python3.13/site-packages (from llm>=0.24->llm-mlx) (3.0.0)
Requirement already satisfied: setuptools in ./.local/share/uv/tools/llm/lib/python3.13/site-packages (from llm>=0.24->llm-mlx) (80.9.0)
Requirement already satisfied: pip in ./.local/share/uv/tools/llm/lib/python3.13/site-packages (from llm>=0.24->llm-mlx) (25.1.1)
Requirement already satisfied: puremagic in ./.local/share/uv/tools/llm/lib/python3.13/site-packages (from llm>=0.24->llm-mlx) (1.29)
Requirement already satisfied: anyio<5,>=3.5.0 in ./.local/share/uv/tools/llm/lib/python3.13/site-packages (from openai>=1.55.3->llm>=0.24->llm-mlx) (4.9.0)
Requirement already satisfied: distro<2,>=1.7.0 in ./.local/share/uv/tools/llm/lib/python3.13/site-packages (from openai>=1.55.3->llm>=0.24->llm-mlx) (1.9.0)
Requirement already satisfied: httpx<1,>=0.23.0 in ./.local/share/uv/tools/llm/lib/python3.13/site-packages (from openai>=1.55.3->llm>=0.24->llm-mlx) (0.28.1)
Requirement already satisfied: jiter<1,>=0.4.0 in ./.local/share/uv/tools/llm/lib/python3.13/site-packages (from openai>=1.55.3->llm>=0.24->llm-mlx) (0.10.0)
Requirement already satisfied: sniffio in ./.local/share/uv/tools/llm/lib/python3.13/site-packages (from openai>=1.55.3->llm>=0.24->llm-mlx) (1.3.1)
Requirement already satisfied: tqdm>4 in ./.local/share/uv/tools/llm/lib/python3.13/site-packages (from openai>=1.55.3->llm>=0.24->llm-mlx) (4.67.1)
Requirement already satisfied: typing-extensions<5,>=4.11 in ./.local/share/uv/tools/llm/lib/python3.13/site-packages (from openai>=1.55.3->llm>=0.24->llm-mlx) (4.13.2)
Requirement already satisfied: idna>=2.8 in ./.local/share/uv/tools/llm/lib/python3.13/site-packages (from anyio<5,>=3.5.0->openai>=1.55.3->llm>=0.24->llm-mlx) (3.10)
Requirement already satisfied: certifi in ./.local/share/uv/tools/llm/lib/python3.13/site-packages (from httpx<1,>=0.23.0->openai>=1.55.3->llm>=0.24->llm-mlx) (2025.4.26)
Requirement already satisfied: httpcore==1.* in ./.local/share/uv/tools/llm/lib/python3.13/site-packages (from httpx<1,>=0.23.0->openai>=1.55.3->llm>=0.24->llm-mlx) (1.0.9)
Requirement already satisfied: h11>=0.16 in ./.local/share/uv/tools/llm/lib/python3.13/site-packages (from httpcore==1.*->httpx<1,>=0.23.0->openai>=1.55.3->llm>=0.24->llm-mlx) (0.16.0)
Requirement already satisfied: annotated-types>=0.6.0 in ./.local/share/uv/tools/llm/lib/python3.13/site-packages (from pydantic>=2.0.0->llm>=0.24->llm-mlx) (0.7.0)
Requirement already satisfied: pydantic-core==2.33.2 in ./.local/share/uv/tools/llm/lib/python3.13/site-packages (from pydantic>=2.0.0->llm>=0.24->llm-mlx) (2.33.2)
Requirement already satisfied: typing-inspection>=0.4.0 in ./.local/share/uv/tools/llm/lib/python3.13/site-packages (from pydantic>=2.0.0->llm>=0.24->llm-mlx) (0.4.1)
Requirement already satisfied: sqlite-fts4 in ./.local/share/uv/tools/llm/lib/python3.13/site-packages (from sqlite-utils>=3.37->llm>=0.24->llm-mlx) (1.0.3)
Requirement already satisfied: tabulate in ./.local/share/uv/tools/llm/lib/python3.13/site-packages (from sqlite-utils>=3.37->llm>=0.24->llm-mlx) (0.9.0)
Requirement already satisfied: python-dateutil in ./.local/share/uv/tools/llm/lib/python3.13/site-packages (from sqlite-utils>=3.37->llm>=0.24->llm-mlx) (2.9.0.post0)
Collecting mlx>=0.25.0 (from mlx-lm->llm-mlx)
Using cached mlx-0.25.2-cp313-cp313-macosx_15_0_arm64.whl.metadata (5.3 kB)
Collecting numpy (from mlx-lm->llm-mlx)
Using cached numpy-2.2.6-cp313-cp313-macosx_14_0_arm64.whl.metadata (62 kB)
Collecting transformers>=4.39.3 (from transformers[sentencepiece]>=4.39.3->mlx-lm->llm-mlx)
Using cached transformers-4.52.4-py3-none-any.whl.metadata (38 kB)
Collecting protobuf (from mlx-lm->llm-mlx)
Using cached protobuf-6.31.1-cp39-abi3-macosx_10_9_universal2.whl.metadata (593 bytes)
Collecting jinja2 (from mlx-lm->llm-mlx)
Using cached jinja2-3.1.6-py3-none-any.whl.metadata (2.9 kB)
Collecting filelock (from transformers>=4.39.3->transformers[sentencepiece]>=4.39.3->mlx-lm->llm-mlx)
Using cached filelock-3.18.0-py3-none-any.whl.metadata (2.9 kB)
Collecting huggingface-hub<1.0,>=0.30.0 (from transformers>=4.39.3->transformers[sentencepiece]>=4.39.3->mlx-lm->llm-mlx)
Using cached huggingface_hub-0.32.3-py3-none-any.whl.metadata (14 kB)
Collecting packaging>=20.0 (from transformers>=4.39.3->transformers[sentencepiece]>=4.39.3->mlx-lm->llm-mlx)
Using cached packaging-25.0-py3-none-any.whl.metadata (3.3 kB)
Collecting regex!=2019.12.17 (from transformers>=4.39.3->transformers[sentencepiece]>=4.39.3->mlx-lm->llm-mlx)
Using cached regex-2024.11.6-cp313-cp313-macosx_11_0_arm64.whl.metadata (40 kB)
Collecting requests (from transformers>=4.39.3->transformers[sentencepiece]>=4.39.3->mlx-lm->llm-mlx)
Using cached requests-2.32.3-py3-none-any.whl.metadata (4.6 kB)
Collecting tokenizers<0.22,>=0.21 (from transformers>=4.39.3->transformers[sentencepiece]>=4.39.3->mlx-lm->llm-mlx)
Using cached tokenizers-0.21.1-cp39-abi3-macosx_11_0_arm64.whl.metadata (6.8 kB)
Collecting safetensors>=0.4.3 (from transformers>=4.39.3->transformers[sentencepiece]>=4.39.3->mlx-lm->llm-mlx)
Using cached safetensors-0.5.3-cp38-abi3-macosx_11_0_arm64.whl.metadata (3.8 kB)
Collecting fsspec>=2023.5.0 (from huggingface-hub<1.0,>=0.30.0->transformers>=4.39.3->transformers[sentencepiece]>=4.39.3->mlx-lm->llm-mlx)
Using cached fsspec-2025.5.1-py3-none-any.whl.metadata (11 kB)
Collecting hf-xet<2.0.0,>=1.1.2 (from huggingface-hub<1.0,>=0.30.0->transformers>=4.39.3->transformers[sentencepiece]>=4.39.3->mlx-lm->llm-mlx)
Using cached hf_xet-1.1.2-cp37-abi3-macosx_11_0_arm64.whl.metadata (879 bytes)
Collecting sentencepiece!=0.1.92,>=0.1.91 (from transformers[sentencepiece]>=4.39.3->mlx-lm->llm-mlx)
Using cached sentencepiece-0.2.0.tar.gz (2.6 MB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... done
Collecting MarkupSafe>=2.0 (from jinja2->mlx-lm->llm-mlx)
Using cached MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl.metadata (4.0 kB)
Requirement already satisfied: six>=1.5 in ./.local/share/uv/tools/llm/lib/python3.13/site-packages (from python-dateutil->sqlite-utils>=3.37->llm>=0.24->llm-mlx) (1.17.0)
Collecting charset-normalizer<4,>=2 (from requests->transformers>=4.39.3->transformers[sentencepiece]>=4.39.3->mlx-lm->llm-mlx)
Using cached charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl.metadata (35 kB)
Collecting urllib3<3,>=1.21.1 (from requests->transformers>=4.39.3->transformers[sentencepiece]>=4.39.3->mlx-lm->llm-mlx)
Using cached urllib3-2.4.0-py3-none-any.whl.metadata (6.5 kB)
Using cached llm_mlx-0.4-py3-none-any.whl (11 kB)
Using cached mlx_lm-0.24.1-py3-none-any.whl (194 kB)
Using cached mlx-0.25.2-cp313-cp313-macosx_15_0_arm64.whl (30.4 MB)
Using cached transformers-4.52.4-py3-none-any.whl (10.5 MB)
Using cached huggingface_hub-0.32.3-py3-none-any.whl (512 kB)
Using cached hf_xet-1.1.2-cp37-abi3-macosx_11_0_arm64.whl (2.5 MB)
Using cached tokenizers-0.21.1-cp39-abi3-macosx_11_0_arm64.whl (2.7 MB)
Using cached fsspec-2025.5.1-py3-none-any.whl (199 kB)
Using cached numpy-2.2.6-cp313-cp313-macosx_14_0_arm64.whl (5.1 MB)
Using cached packaging-25.0-py3-none-any.whl (66 kB)
Using cached regex-2024.11.6-cp313-cp313-macosx_11_0_arm64.whl (284 kB)
Using cached safetensors-0.5.3-cp38-abi3-macosx_11_0_arm64.whl (418 kB)
Using cached filelock-3.18.0-py3-none-any.whl (16 kB)
Using cached jinja2-3.1.6-py3-none-any.whl (134 kB)
Using cached MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl (12 kB)
Using cached protobuf-6.31.1-cp39-abi3-macosx_10_9_universal2.whl (425 kB)
Using cached requests-2.32.3-py3-none-any.whl (64 kB)
Using cached charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl (199 kB)
Using cached urllib3-2.4.0-py3-none-any.whl (128 kB)
Building wheels for collected packages: sentencepiece
Building wheel for sentencepiece (pyproject.toml) ... error
error: subprocess-exited-with-error
× Building wheel for sentencepiece (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [121 lines of output]
/private/var/folders/jj/670rn_217vs_9q5y9yfxtlnw00k_x2/T/pip-build-env-i8egw4nr/overlay/lib/python3.13/site-packages/setuptools/_distutils/dist.py:289: UserWarning: Unknown distribution option: 'test_suite'
warnings.warn(msg)
/private/var/folders/jj/670rn_217vs_9q5y9yfxtlnw00k_x2/T/pip-build-env-i8egw4nr/overlay/lib/python3.13/site-packages/setuptools/dist.py:759: SetuptoolsDeprecationWarning: License classifiers are deprecated.
!!
********************************************************************************
Please consider removing the following classifiers in favor of a SPDX license expression:
License :: OSI Approved :: Apache Software License
See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.
********************************************************************************
!!
self._finalize_license_expression()
running bdist_wheel
running build
running build_py
creating build/lib.macosx-11.0-arm64-cpython-313/sentencepiece
copying src/sentencepiece/__init__.py -> build/lib.macosx-11.0-arm64-cpython-313/sentencepiece
copying src/sentencepiece/_version.py -> build/lib.macosx-11.0-arm64-cpython-313/sentencepiece
copying src/sentencepiece/sentencepiece_model_pb2.py -> build/lib.macosx-11.0-arm64-cpython-313/sentencepiece
copying src/sentencepiece/sentencepiece_pb2.py -> build/lib.macosx-11.0-arm64-cpython-313/sentencepiece
running build_ext
/bin/sh: pkg-config: command not found
./build_bundled.sh: line 21: cmake: command not found
./build_bundled.sh: line 22: nproc: command not found
./build_bundled.sh: line 22: cmake: command not found
Traceback (most recent call last):
File "/Users/######/.local/share/uv/tools/llm/lib/python3.13/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 389, in <module>
main()
~~~~^^
File "/Users/######/.local/share/uv/tools/llm/lib/python3.13/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 373, in main
json_out["return_val"] = hook(**hook_input["kwargs"])
~~~~^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/######/.local/share/uv/tools/llm/lib/python3.13/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 280, in build_wheel
return _build_backend().build_wheel(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
wheel_directory, config_settings, metadata_directory
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/private/var/folders/jj/670rn_217vs_9q5y9yfxtlnw00k_x2/T/pip-build-env-i8egw4nr/overlay/lib/python3.13/site-packages/setuptools/build_meta.py", line 435, in build_wheel
return _build(['bdist_wheel', '--dist-info-dir', str(metadata_directory)])
File "/private/var/folders/jj/670rn_217vs_9q5y9yfxtlnw00k_x2/T/pip-build-env-i8egw4nr/overlay/lib/python3.13/site-packages/setuptools/build_meta.py", line 423, in _build
return self._build_with_temp_dir(
~~~~~~~~~~~~~~~~~~~~~~~~~^
cmd,
^^^^
...<3 lines>...
self._arbitrary_args(config_settings),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/private/var/folders/jj/670rn_217vs_9q5y9yfxtlnw00k_x2/T/pip-build-env-i8egw4nr/overlay/lib/python3.13/site-packages/setuptools/build_meta.py", line 404, in _build_with_temp_dir
self.run_setup()
~~~~~~~~~~~~~~^^
File "/private/var/folders/jj/670rn_217vs_9q5y9yfxtlnw00k_x2/T/pip-build-env-i8egw4nr/overlay/lib/python3.13/site-packages/setuptools/build_meta.py", line 512, in run_setup
super().run_setup(setup_script=setup_script)
~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/private/var/folders/jj/670rn_217vs_9q5y9yfxtlnw00k_x2/T/pip-build-env-i8egw4nr/overlay/lib/python3.13/site-packages/setuptools/build_meta.py", line 317, in run_setup
exec(code, locals())
~~~~^^^^^^^^^^^^^^^^
File "<string>", line 169, in <module>
File "/private/var/folders/jj/670rn_217vs_9q5y9yfxtlnw00k_x2/T/pip-build-env-i8egw4nr/overlay/lib/python3.13/site-packages/setuptools/__init__.py", line 115, in setup
return distutils.core.setup(**attrs)
~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/private/var/folders/jj/670rn_217vs_9q5y9yfxtlnw00k_x2/T/pip-build-env-i8egw4nr/overlay/lib/python3.13/site-packages/setuptools/_distutils/core.py", line 186, in setup
return run_commands(dist)
File "/private/var/folders/jj/670rn_217vs_9q5y9yfxtlnw00k_x2/T/pip-build-env-i8egw4nr/overlay/lib/python3.13/site-packages/setuptools/_distutils/core.py", line 202, in run_commands
dist.run_commands()
~~~~~~~~~~~~~~~~~^^
File "/private/var/folders/jj/670rn_217vs_9q5y9yfxtlnw00k_x2/T/pip-build-env-i8egw4nr/overlay/lib/python3.13/site-packages/setuptools/_distutils/dist.py", line 1002, in run_commands
self.run_command(cmd)
~~~~~~~~~~~~~~~~^^^^^
File "/private/var/folders/jj/670rn_217vs_9q5y9yfxtlnw00k_x2/T/pip-build-env-i8egw4nr/overlay/lib/python3.13/site-packages/setuptools/dist.py", line 1102, in run_command
super().run_command(command)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/private/var/folders/jj/670rn_217vs_9q5y9yfxtlnw00k_x2/T/pip-build-env-i8egw4nr/overlay/lib/python3.13/site-packages/setuptools/_distutils/dist.py", line 1021, in run_command
cmd_obj.run()
~~~~~~~~~~~^^
File "/private/var/folders/jj/670rn_217vs_9q5y9yfxtlnw00k_x2/T/pip-build-env-i8egw4nr/overlay/lib/python3.13/site-packages/setuptools/command/bdist_wheel.py", line 370, in run
self.run_command("build")
~~~~~~~~~~~~~~~~^^^^^^^^^
File "/private/var/folders/jj/670rn_217vs_9q5y9yfxtlnw00k_x2/T/pip-build-env-i8egw4nr/overlay/lib/python3.13/site-packages/setuptools/_distutils/cmd.py", line 357, in run_command
self.distribution.run_command(command)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/private/var/folders/jj/670rn_217vs_9q5y9yfxtlnw00k_x2/T/pip-build-env-i8egw4nr/overlay/lib/python3.13/site-packages/setuptools/dist.py", line 1102, in run_command
super().run_command(command)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/private/var/folders/jj/670rn_217vs_9q5y9yfxtlnw00k_x2/T/pip-build-env-i8egw4nr/overlay/lib/python3.13/site-packages/setuptools/_distutils/dist.py", line 1021, in run_command
cmd_obj.run()
~~~~~~~~~~~^^
File "/private/var/folders/jj/670rn_217vs_9q5y9yfxtlnw00k_x2/T/pip-build-env-i8egw4nr/overlay/lib/python3.13/site-packages/setuptools/_distutils/command/build.py", line 135, in run
self.run_command(cmd_name)
~~~~~~~~~~~~~~~~^^^^^^^^^^
File "/private/var/folders/jj/670rn_217vs_9q5y9yfxtlnw00k_x2/T/pip-build-env-i8egw4nr/overlay/lib/python3.13/site-packages/setuptools/_distutils/cmd.py", line 357, in run_command
self.distribution.run_command(command)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/private/var/folders/jj/670rn_217vs_9q5y9yfxtlnw00k_x2/T/pip-build-env-i8egw4nr/overlay/lib/python3.13/site-packages/setuptools/dist.py", line 1102, in run_command
super().run_command(command)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/private/var/folders/jj/670rn_217vs_9q5y9yfxtlnw00k_x2/T/pip-build-env-i8egw4nr/overlay/lib/python3.13/site-packages/setuptools/_distutils/dist.py", line 1021, in run_command
cmd_obj.run()
~~~~~~~~~~~^^
File "/private/var/folders/jj/670rn_217vs_9q5y9yfxtlnw00k_x2/T/pip-build-env-i8egw4nr/overlay/lib/python3.13/site-packages/setuptools/command/build_ext.py", line 96, in run
_build_ext.run(self)
~~~~~~~~~~~~~~^^^^^^
File "/private/var/folders/jj/670rn_217vs_9q5y9yfxtlnw00k_x2/T/pip-build-env-i8egw4nr/overlay/lib/python3.13/site-packages/setuptools/_distutils/command/build_ext.py", line 368, in run
self.build_extensions()
~~~~~~~~~~~~~~~~~~~~~^^
File "/private/var/folders/jj/670rn_217vs_9q5y9yfxtlnw00k_x2/T/pip-build-env-i8egw4nr/overlay/lib/python3.13/site-packages/setuptools/_distutils/command/build_ext.py", line 484, in build_extensions
self._build_extensions_serial()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
File "/private/var/folders/jj/670rn_217vs_9q5y9yfxtlnw00k_x2/T/pip-build-env-i8egw4nr/overlay/lib/python3.13/site-packages/setuptools/_distutils/command/build_ext.py", line 510, in _build_extensions_serial
self.build_extension(ext)
~~~~~~~~~~~~~~~~~~~~^^^^^
File "<string>", line 87, in build_extension
File "/Users/######/.local/share/uv/python/cpython-3.13.1-macos-aarch64-none/lib/python3.13/subprocess.py", line 419, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['./build_bundled.sh', '0.2.0']' returned non-zero exit status 127.
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for sentencepiece
Failed to build sentencepiece
ERROR: Failed to build installable wheels for some pyproject.toml based projects (sentencepiece)
Running into this error while trying to install this plugin as per instructions...
On a
Mac 15.5 with M3 Max