Boltz 1.0.0 install fails on Mac and Windows because trifast is only available on Linux
Boltz 1.0.0 and current May 28, 2025 Boltz github source fails to install on Mac and Windows because Boltz requires the PyPi trifast package which depends on the PyPi triton package and triton is only support on Linux.
This is simple to fix by requiring trifast only on Linux in pyproject.toml and setting use_trifast = False in the main.py predict() routine except for Linux. I've tested these changes and will submit a pull request today.
Here's the error output trying to install Boltz on a Mac:
$ python3.11 -m pip install boltz==1.0.0 Collecting boltz==1.0.0 Using cached boltz-1.0.0-py3-none-any.whl (150 kB) Collecting torch>=2.2 (from boltz==1.0.0) Using cached torch-2.7.0-cp311-none-macosx_11_0_arm64.whl (68.6 MB) Collecting numpy==1.26.3 (from boltz==1.0.0) Using cached numpy-1.26.3-cp311-cp311-macosx_11_0_arm64.whl (14.0 MB) Collecting hydra-core==1.3.2 (from boltz==1.0.0) Using cached hydra_core-1.3.2-py3-none-any.whl (154 kB) Collecting pytorch-lightning==2.4.0 (from boltz==1.0.0) Using cached pytorch_lightning-2.4.0-py3-none-any.whl (815 kB) Collecting rdkit>=2024.3.2 (from boltz==1.0.0) Using cached rdkit-2025.3.2-cp311-cp311-macosx_11_0_arm64.whl (28.0 MB) Collecting dm-tree==0.1.8 (from boltz==1.0.0) Using cached dm_tree-0.1.8-cp311-cp311-macosx_11_0_arm64.whl (110 kB) Collecting requests==2.32.3 (from boltz==1.0.0) Using cached requests-2.32.3-py3-none-any.whl (64 kB) Collecting pandas>=2.2.2 (from boltz==1.0.0) Using cached pandas-2.2.3-cp311-cp311-macosx_11_0_arm64.whl (11.3 MB) Collecting types-requests (from boltz==1.0.0) Using cached types_requests-2.32.0.20250515-py3-none-any.whl (20 kB) Collecting einops==0.8.0 (from boltz==1.0.0) Using cached einops-0.8.0-py3-none-any.whl (43 kB) Collecting einx==0.3.0 (from boltz==1.0.0) Using cached einx-0.3.0-py3-none-any.whl (102 kB) Collecting fairscale==0.4.13 (from boltz==1.0.0) Using cached fairscale-0.4.13-py3-none-any.whl Collecting mashumaro==3.14 (from boltz==1.0.0) Using cached mashumaro-3.14-py3-none-any.whl (92 kB) Collecting modelcif==1.2 (from boltz==1.0.0) Using cached modelcif-1.2-py3-none-any.whl Collecting wandb==0.18.7 (from boltz==1.0.0) Using cached wandb-0.18.7-py3-none-macosx_11_0_arm64.whl (15.2 MB) Collecting click==8.1.7 (from boltz==1.0.0) Using cached click-8.1.7-py3-none-any.whl (97 kB) Collecting pyyaml==6.0.2 (from boltz==1.0.0) Using cached PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl (172 kB) Collecting biopython==1.84 (from boltz==1.0.0) Using cached biopython-1.84-cp311-cp311-macosx_11_0_arm64.whl (2.7 MB) Collecting scipy==1.13.1 (from boltz==1.0.0) Using cached scipy-1.13.1-cp311-cp311-macosx_12_0_arm64.whl (30.3 MB) Collecting trifast>=0.1.11 (from boltz==1.0.0) Using cached trifast-0.1.13-py3-none-any.whl (16 kB) Collecting numba==0.61.0 (from boltz==1.0.0) Using cached numba-0.61.0-cp311-cp311-macosx_11_0_arm64.whl (2.8 MB) Collecting sympy (from einx==0.3.0->boltz==1.0.0) Using cached sympy-1.14.0-py3-none-any.whl (6.3 MB) Collecting frozendict (from einx==0.3.0->boltz==1.0.0) Using cached frozendict-2.4.6-py311-none-any.whl (16 kB) Collecting omegaconf<2.4,>=2.2 (from hydra-core==1.3.2->boltz==1.0.0) Using cached omegaconf-2.3.0-py3-none-any.whl (79 kB) Collecting antlr4-python3-runtime==4.9.* (from hydra-core==1.3.2->boltz==1.0.0) Using cached antlr4_python3_runtime-4.9.3-py3-none-any.whl Collecting packaging (from hydra-core==1.3.2->boltz==1.0.0) Using cached packaging-25.0-py3-none-any.whl (66 kB) Collecting typing-extensions>=4.1.0 (from mashumaro==3.14->boltz==1.0.0) Using cached typing_extensions-4.13.2-py3-none-any.whl (45 kB) Collecting ihm>=1.7 (from modelcif==1.2->boltz==1.0.0) Using cached ihm-2.5-cp311-cp311-macosx_10_9_universal2.whl Collecting llvmlite<0.45,>=0.44.0dev0 (from numba==0.61.0->boltz==1.0.0) Using cached llvmlite-0.44.0-cp311-cp311-macosx_11_0_arm64.whl (26.2 MB) Collecting tqdm>=4.57.0 (from pytorch-lightning==2.4.0->boltz==1.0.0) Using cached tqdm-4.67.1-py3-none-any.whl (78 kB) Collecting fsspec[http]>=2022.5.0 (from pytorch-lightning==2.4.0->boltz==1.0.0) Using cached fsspec-2025.5.1-py3-none-any.whl (199 kB) Collecting torchmetrics>=0.7.0 (from pytorch-lightning==2.4.0->boltz==1.0.0) Using cached torchmetrics-1.7.2-py3-none-any.whl (962 kB) Collecting lightning-utilities>=0.10.0 (from pytorch-lightning==2.4.0->boltz==1.0.0) Using cached lightning_utilities-0.14.3-py3-none-any.whl (28 kB) Collecting charset-normalizer<4,>=2 (from requests==2.32.3->boltz==1.0.0) Using cached charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl (198 kB) Collecting idna<4,>=2.5 (from requests==2.32.3->boltz==1.0.0) Using cached idna-3.10-py3-none-any.whl (70 kB) Collecting urllib3<3,>=1.21.1 (from requests==2.32.3->boltz==1.0.0) Using cached urllib3-2.4.0-py3-none-any.whl (128 kB) Collecting certifi>=2017.4.17 (from requests==2.32.3->boltz==1.0.0) Using cached certifi-2025.4.26-py3-none-any.whl (159 kB) Collecting docker-pycreds>=0.4.0 (from wandb==0.18.7->boltz==1.0.0) Using cached docker_pycreds-0.4.0-py2.py3-none-any.whl (9.0 kB) Collecting gitpython!=3.1.29,>=1.0.0 (from wandb==0.18.7->boltz==1.0.0) Using cached GitPython-3.1.44-py3-none-any.whl (207 kB) Collecting platformdirs (from wandb==0.18.7->boltz==1.0.0) Using cached platformdirs-4.3.8-py3-none-any.whl (18 kB) Collecting protobuf!=4.21.0,!=5.28.0,<6,>=3.19.0 (from wandb==0.18.7->boltz==1.0.0) Using cached protobuf-5.29.4-cp38-abi3-macosx_10_9_universal2.whl (417 kB) Collecting psutil>=5.0.0 (from wandb==0.18.7->boltz==1.0.0) Using cached psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl (239 kB) Collecting sentry-sdk>=2.0.0 (from wandb==0.18.7->boltz==1.0.0) Using cached sentry_sdk-2.29.1-py2.py3-none-any.whl (341 kB) Collecting setproctitle (from wandb==0.18.7->boltz==1.0.0) Using cached setproctitle-1.3.6-cp311-cp311-macosx_11_0_arm64.whl (11 kB) Requirement already satisfied: setuptools in ./boltz_test/lib/python3.11/site-packages (from wandb==0.18.7->boltz==1.0.0) (65.5.0) Collecting python-dateutil>=2.8.2 (from pandas>=2.2.2->boltz==1.0.0) Using cached python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB) Collecting pytz>=2020.1 (from pandas>=2.2.2->boltz==1.0.0) Using cached pytz-2025.2-py2.py3-none-any.whl (509 kB) Collecting tzdata>=2022.7 (from pandas>=2.2.2->boltz==1.0.0) Using cached tzdata-2025.2-py2.py3-none-any.whl (347 kB) Collecting Pillow (from rdkit>=2024.3.2->boltz==1.0.0) Using cached pillow-11.2.1-cp311-cp311-macosx_11_0_arm64.whl (3.0 MB) Collecting filelock (from torch>=2.2->boltz==1.0.0) Using cached filelock-3.18.0-py3-none-any.whl (16 kB) Collecting networkx (from torch>=2.2->boltz==1.0.0) Using cached networkx-3.4.2-py3-none-any.whl (1.7 MB) Collecting jinja2 (from torch>=2.2->boltz==1.0.0) Using cached jinja2-3.1.6-py3-none-any.whl (134 kB) Collecting jaxtyping>=0.2.36 (from trifast>=0.1.11->boltz==1.0.0) Using cached jaxtyping-0.3.2-py3-none-any.whl (55 kB) Collecting setuptools (from wandb==0.18.7->boltz==1.0.0) Using cached setuptools-80.9.0-py3-none-any.whl (1.2 MB) INFO: pip is looking at multiple versions of trifast to determine which version is compatible with other requirements. This could take a while. Collecting trifast>=0.1.11 (from boltz==1.0.0) Using cached trifast-0.1.12-py3-none-any.whl (14 kB) Using cached trifast-0.1.11-py3-none-any.whl (24 kB) ERROR: Cannot install boltz because these package versions have conflicting dependencies.
The conflict is caused by: trifast 0.1.13 depends on triton>=3.1.0 trifast 0.1.12 depends on triton>=3.1.0 trifast 0.1.11 depends on triton>=3.1.0
To fix this you could try to:
- loosen the range of package versions you've specified
- remove package versions to allow pip attempt to solve the dependency conflict
ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/topics/dependency-resolution/#dealing-with-dependency-conflicts
Hi, I fixed it differently in my forked version (lines 986 and 987 in main.py):
if accelerator == "cpu" or torch.backends.mps.is_available():
no_trifast = True