PyTensor fails to compile model after upgrading to mac OS 15.4

Hey,

this is my very first post. I hope that I am not at the wrong place with this question. In case not, I am happy to hear where to ask instead. So here is my question/problem:

I’ve upgraded to mac OS 15.4 and did a clean install of my environment. So i’ve created a fresh conda environment and installed the following:

conda install -c conda-forge -y pymc nutpie blackjax ipykernel ipywidgets seaborn fastparquet

I then tried to run the most basic example:

with pm.Model() as model:
    alpha = pm.Normal('alpha', mu=0, sigma=1)
    pm.Normal('Est', mu=alpha, sigma=1, observed=0)
    pm.sample()

But unfortunately I am getting the following errors:

ERROR (pytensor.graph.rewriting.basic): Rewrite failure due to: constant_folding
ERROR (pytensor.graph.rewriting.basic): node: Cast{float64}(0)
ERROR (pytensor.graph.rewriting.basic): TRACEBACK:
ERROR (pytensor.graph.rewriting.basic): Traceback (most recent call last):
  File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/graph/rewriting/basic.py", line 1922, in process_node
    replacements = node_rewriter.transform(fgraph, node)
  File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/graph/rewriting/basic.py", line 1086, in transform
    return self.fn(fgraph, node)
           ~~~~~~~^^^^^^^^^^^^^^
  File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/tensor/rewriting/basic.py", line 1173, in constant_folding
    return unconditional_constant_folding.transform(fgraph, node)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/graph/rewriting/basic.py", line 1086, in transform
    return self.fn(fgraph, node)
           ~~~~~~~^^^^^^^^^^^^^^
  File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/tensor/rewriting/basic.py", line 1122, in unconditional_constant_folding
    thunk = node.op.make_thunk(node, storage_map, compute_map, no_recycling=[])
  File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/op.py", line 119, in make_thunk
    return self.make_c_thunk(node, storage_map, compute_map, no_recycling)
           ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/op.py", line 84, in make_c_thunk
    outputs = cl.make_thunk(
        input_storage=node_input_storage, output_storage=node_output_storage
    )
  File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/basic.py", line 1185, in make_thunk
    cthunk, module, in_storage, out_storage, error_storage = self.__compile__(
                                                             ~~~~~~~~~~~~~~~~^
        input_storage, output_storage, storage_map, cache
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/basic.py", line 1102, in __compile__
    thunk, module = self.cthunk_factory(
                    ~~~~~~~~~~~~~~~~~~~^
        error_storage,
        ^^^^^^^^^^^^^^
    ...<3 lines>...
        cache,
        ^^^^^^
    )
    ^
  File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/basic.py", line 1626, in cthunk_factory
    module = cache.module_from_key(key=key, lnk=self)
  File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/cmodule.py", line 1250, in module_from_key
    module = lnk.compile_cmodule(location)
  File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/basic.py", line 1527, in compile_cmodule
    module = c_compiler.compile_str(
        module_name=mod.code_hash,
    ...<5 lines>...
        preargs=preargs,
    )
  File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/cmodule.py", line 2676, in compile_str
    raise CompileError(
        f"Compilation failed (return status={status}):\n{' '.join(cmd)}\n{compile_stderr}"
    )
pytensor.link.c.exceptions.CompileError: Compilation failed (return status=1):
/Users/user/bin/miniconda3/envs/simple-sample/bin/clang++ -dynamiclib -g -O3 -fno-math-errno -Wno-unused-label -Wno-unused-variable -Wno-write-strings -Wno-c++11-narrowing -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION -fPIC -undefined dynamic_lookup -ld64 -I/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/numpy/_core/include -I/Users/user/bin/miniconda3/envs/simple-sample/include/python3.13 -I/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/c_code -L/Users/user/bin/miniconda3/envs/simple-sample/lib -fvisibility=hidden -o /Users/user/.pytensor/compiledir_macOS-15.4-arm64-arm-64bit-Mach-O-arm-3.13.2-64/tmp4s7jz6zz/m300014ab234446dc184b72b5e07d4663d2813454bb33582d49f5e173c77f73aa.so /Users/user/.pytensor/compiledir_macOS-15.4-arm64-arm-64bit-Mach-O-arm-3.13.2-64/tmp4s7jz6zz/mod.cpp
ld: -lto_library library filename must be 'libLTO.dylib'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)

You can find the C code in this temporary file: /var/folders/zq/b1tykq9j6qv4x531tbjvm9500000gn/T/pytensor_compilation_error_pdwh8ixg
library to_library is not found.
ERROR (pytensor.graph.rewriting.basic): Rewrite failure due to: constant_folding
ERROR (pytensor.graph.rewriting.basic): node: Cast{float64}(0)
ERROR (pytensor.graph.rewriting.basic): TRACEBACK:
ERROR (pytensor.graph.rewriting.basic): Traceback (most recent call last):
  File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/graph/rewriting/basic.py", line 1922, in process_node
    replacements = node_rewriter.transform(fgraph, node)
  File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/graph/rewriting/basic.py", line 1086, in transform
    return self.fn(fgraph, node)
           ~~~~~~~^^^^^^^^^^^^^^
  File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/tensor/rewriting/basic.py", line 1173, in constant_folding
    return unconditional_constant_folding.transform(fgraph, node)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/graph/rewriting/basic.py", line 1086, in transform
    return self.fn(fgraph, node)
           ~~~~~~~^^^^^^^^^^^^^^
  File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/tensor/rewriting/basic.py", line 1122, in unconditional_constant_folding
    thunk = node.op.make_thunk(node, storage_map, compute_map, no_recycling=[])
  File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/op.py", line 119, in make_thunk
    return self.make_c_thunk(node, storage_map, compute_map, no_recycling)
           ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/op.py", line 84, in make_c_thunk
    outputs = cl.make_thunk(
        input_storage=node_input_storage, output_storage=node_output_storage
    )
  File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/basic.py", line 1185, in make_thunk
    cthunk, module, in_storage, out_storage, error_storage = self.__compile__(
                                                             ~~~~~~~~~~~~~~~~^
        input_storage, output_storage, storage_map, cache
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/basic.py", line 1102, in __compile__
    thunk, module = self.cthunk_factory(
                    ~~~~~~~~~~~~~~~~~~~^
        error_storage,
        ^^^^^^^^^^^^^^
    ...<3 lines>...
        cache,
        ^^^^^^
    )
    ^
  File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/basic.py", line 1626, in cthunk_factory
    module = cache.module_from_key(key=key, lnk=self)
  File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/cmodule.py", line 1250, in module_from_key
    module = lnk.compile_cmodule(location)
  File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/basic.py", line 1527, in compile_cmodule
    module = c_compiler.compile_str(
        module_name=mod.code_hash,
    ...<5 lines>...
        preargs=preargs,
    )
  File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/cmodule.py", line 2676, in compile_str
    raise CompileError(
        f"Compilation failed (return status={status}):\n{' '.join(cmd)}\n{compile_stderr}"
    )
pytensor.link.c.exceptions.CompileError: Compilation failed (return status=1):
/Users/user/bin/miniconda3/envs/simple-sample/bin/clang++ -dynamiclib -g -O3 -fno-math-errno -Wno-unused-label -Wno-unused-variable -Wno-write-strings -Wno-c++11-narrowing -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION -fPIC -undefined dynamic_lookup -ld64 -I/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/numpy/_core/include -I/Users/user/bin/miniconda3/envs/simple-sample/include/python3.13 -I/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/c_code -L/Users/user/bin/miniconda3/envs/simple-sample/lib -fvisibility=hidden -o /Users/user/.pytensor/compiledir_macOS-15.4-arm64-arm-64bit-Mach-O-arm-3.13.2-64/tmpton2huf7/m300014ab234446dc184b72b5e07d4663d2813454bb33582d49f5e173c77f73aa.so /Users/user/.pytensor/compiledir_macOS-15.4-arm64-arm-64bit-Mach-O-arm-3.13.2-64/tmpton2huf7/mod.cpp
ld: -lto_library library filename must be 'libLTO.dylib'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)

and this one:

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
File ~/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/lazylinker_c.py:66
     65         if version != actual_version:
---> 66             raise ImportError(
     67                 "Version check of the existing lazylinker compiled file."
     68                 f" Looking for version {version}, but found {actual_version}. "
     69                 f"Extra debug information: force_compile={force_compile}, _need_reload={_need_reload}"
     70             )
     71 except ImportError:

ImportError: Version check of the existing lazylinker compiled file. Looking for version 0.3, but found None. Extra debug information: force_compile=False, _need_reload=True

During handling of the above exception, another exception occurred:

ImportError                               Traceback (most recent call last)
File ~/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/lazylinker_c.py:87
     86     if version != actual_version:
---> 87         raise ImportError(
     88             "Version check of the existing lazylinker compiled file."
     89             f" Looking for version {version}, but found {actual_version}. "
     90             f"Extra debug information: force_compile={force_compile}, _need_reload={_need_reload}"
     91         )
     92 except ImportError:
     93     # It is useless to try to compile if there isn't any
     94     # compiler!  But we still want to try to load it, in case
     95     # the cache was copied from another computer.

ImportError: Version check of the existing lazylinker compiled file. Looking for version 0.3, but found None. Extra debug information: force_compile=False, _need_reload=True

During handling of the above exception, another exception occurred:

CompileError: Compilation failed (return status=1):
/Users/user/bin/miniconda3/envs/simple-sample/bin/clang++ -dynamiclib -g -Wno-c++11-narrowing -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION -fPIC -undefined dynamic_lookup -ld64 -I/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/numpy/_core/include -I/Users/user/bin/miniconda3/envs/simple-sample/include/python3.13 -I/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/c_code -L/Users/user/bin/miniconda3/envs/simple-sample/lib -fvisibility=hidden -o /Users/user/.pytensor/compiledir_macOS-15.4-arm64-arm-64bit-Mach-O-arm-3.13.2-64/lazylinker_ext/lazylinker_ext.so /Users/user/.pytensor/compiledir_macOS-15.4-arm64-arm-64bit-Mach-O-arm-3.13.2-64/lazylinker_ext/mod.cpp
ld: -lto_library library filename must be 'libLTO.dylib'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)

My system is a MacBook Pro with an M4 CPU.
When I export my environment into a yml, I am getting this:

name: simple-sample
channels:
  - nodefaults
  - conda-forge
  - bioconda
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
dependencies:
  - absl-py=2.2.0=pyhd8ed1ab_0
  - accelerate=1.5.2=pyhd8ed1ab_0
  - adwaita-icon-theme=48.0=unix_0
  - appnope=0.1.4=pyhd8ed1ab_1
  - arviz=0.21.0=pyhd8ed1ab_0
  - asttokens=3.0.0=pyhd8ed1ab_1
  - atk-1.0=2.38.0=hd03087b_2
  - aws-c-auth=0.8.7=h771b9f8_1
  - aws-c-cal=0.8.7=hf78e982_1
  - aws-c-common=0.12.1=h5505292_0
  - aws-c-compression=0.3.1=h2da6199_3
  - aws-c-event-stream=0.5.4=hc8cef5c_3
  - aws-c-http=0.9.5=h7ae4978_0
  - aws-c-io=0.17.0=hda12475_8
  - aws-c-mqtt=0.12.2=hd618802_3
  - aws-c-s3=0.7.13=hb321cbc_3
  - aws-c-sdkutils=0.2.3=h2da6199_3
  - aws-checksums=0.2.3=h2da6199_3
  - aws-crt-cpp=0.31.1=hf6bcbf0_1
  - aws-sdk-cpp=1.11.510=hbf97231_4
  - azure-core-cpp=1.14.0=hd50102c_0
  - azure-identity-cpp=1.10.0=hc602bab_0
  - azure-storage-blobs-cpp=12.13.0=h7585a09_1
  - azure-storage-common-cpp=12.8.0=h9ca1f76_1
  - azure-storage-files-datalake-cpp=12.12.0=hcdd55da_1
  - blackjax=1.2.4=pyhd8ed1ab_1
  - blas=2.131=openblas
  - blas-devel=3.9.0=31_h11c0a38_openblas
  - brotli=1.1.0=hd74edd7_2
  - brotli-bin=1.1.0=hd74edd7_2
  - brotli-python=1.1.0=py313h3579c5c_2
  - bzip2=1.0.8=h99b78c6_7
  - c-ares=1.34.4=h5505292_0
  - ca-certificates=2025.1.31=hf0a4a13_0
  - cached-property=1.5.2=hd8ed1ab_1
  - cached_property=1.5.2=pyha770c72_1
  - cachetools=5.5.2=pyhd8ed1ab_0
  - cairo=1.18.4=h6a3b0d2_0
  - cctools_osx-arm64=1010.6=h3b4f5d3_4
  - certifi=2025.1.31=pyhd8ed1ab_0
  - cffi=1.17.1=py313hc845a76_0
  - charset-normalizer=3.4.1=pyhd8ed1ab_0
  - chex=0.1.88=pyhd8ed1ab_1
  - clang=18.1.8=default_h474c9e2_8
  - clang-18=18.1.8=default_hf90f093_8
  - clang_impl_osx-arm64=18.1.8=h2ae9ea5_24
  - clang_osx-arm64=18.1.8=h07b0088_24
  - clangxx=18.1.8=default_h1ffe849_8
  - clangxx_impl_osx-arm64=18.1.8=h555f467_24
  - clangxx_osx-arm64=18.1.8=h07b0088_24
  - cloudpickle=3.1.1=pyhd8ed1ab_0
  - colorama=0.4.6=pyhd8ed1ab_1
  - comm=0.2.2=pyhd8ed1ab_1
  - compiler-rt=18.1.8=h856b3c1_1
  - compiler-rt_osx-arm64=18.1.8=h832e737_1
  - cons=0.4.6=pyhd8ed1ab_1
  - contourpy=1.3.1=py313h0ebd0e5_0
  - cpython=3.13.2=py313hd8ed1ab_101
  - cramjam=2.8.4rc3=py313h94ce3aa_2
  - cycler=0.12.1=pyhd8ed1ab_1
  - debugpy=1.8.13=py313h928ef07_0
  - decorator=5.2.1=pyhd8ed1ab_0
  - epoxy=1.5.10=h1c322ee_1
  - etils=1.12.2=pyhd8ed1ab_0
  - etuples=0.3.9=pyhd8ed1ab_1
  - exceptiongroup=1.2.2=pyhd8ed1ab_1
  - executing=2.1.0=pyhd8ed1ab_1
  - fastparquet=2024.11.0=py313h46657e6_0
  - fastprogress=1.0.3=pyhd8ed1ab_1
  - filelock=3.18.0=pyhd8ed1ab_0
  - font-ttf-dejavu-sans-mono=2.37=hab24e00_0
  - font-ttf-inconsolata=3.000=h77eed37_0
  - font-ttf-source-code-pro=2.038=h77eed37_0
  - font-ttf-ubuntu=0.83=h77eed37_3
  - fontconfig=2.15.0=h1383a14_1
  - fonts-conda-ecosystem=1=0
  - fonts-conda-forge=1=0
  - fonttools=4.56.0=py313ha9b7d5b_0
  - freetype=2.13.3=h1d14073_0
  - fribidi=1.0.10=h27ca646_0
  - fsspec=2025.3.2=pyhd8ed1ab_0
  - gdk-pixbuf=2.42.12=h7ddc832_0
  - gflags=2.2.2=hf9b8971_1005
  - glib-tools=2.84.0=h1dc7a0c_0
  - glog=0.7.1=heb240a5_0
  - gmp=6.3.0=h7bae524_2
  - gmpy2=2.1.5=py313h2cdc120_3
  - graphite2=1.3.13=hebf3989_1003
  - graphviz=12.2.1=hff64154_1
  - gtk3=3.24.43=h07173f4_5
  - gts=0.7.6=he42f4ea_4
  - h2=4.2.0=pyhd8ed1ab_0
  - h5netcdf=1.6.1=pyhd8ed1ab_0
  - h5py=3.13.0=nompi_py313hcdf59df_100
  - harfbuzz=11.0.0=hb72c1af_0
  - hdf5=1.14.3=nompi_ha698983_109
  - hicolor-icon-theme=0.17=hce30654_2
  - hpack=4.1.0=pyhd8ed1ab_0
  - huggingface_hub=0.30.1=pyhd8ed1ab_0
  - hyperframe=6.1.0=pyhd8ed1ab_0
  - icu=75.1=hfee45f7_0
  - idna=3.10=pyhd8ed1ab_1
  - importlib-metadata=8.6.1=pyha770c72_0
  - ipykernel=6.29.5=pyh57ce528_0
  - ipython=9.0.2=pyhfb0248b_0
  - ipython_pygments_lexers=1.1.1=pyhd8ed1ab_0
  - ipywidgets=8.1.5=pyhd8ed1ab_1
  - jax=0.5.2=pyhd8ed1ab_0
  - jaxlib=0.5.2=cpu_py313ha57edf9_1
  - jaxopt=0.8.3=pyhd8ed1ab_0
  - jedi=0.19.2=pyhd8ed1ab_1
  - jinja2=3.1.6=pyhd8ed1ab_0
  - jupyter_client=8.6.3=pyhd8ed1ab_1
  - jupyter_core=5.7.2=pyh31011fe_1
  - jupyterlab_widgets=3.0.13=pyhd8ed1ab_1
  - kiwisolver=1.4.7=py313hf9c7212_0
  - krb5=1.21.3=h237132a_0
  - lcms2=2.17=h7eeda09_0
  - ld64_osx-arm64=951.9=hb6b49e2_4
  - lerc=4.0.0=h9a09cb3_0
  - libabseil=20250127.1=cxx17_h07bc746_0
  - libaec=1.1.3=hebf3989_0
  - libarrow=19.0.1=hac3dc41_6_cpu
  - libblas=3.9.0=31_h10e41b3_openblas
  - libbrotlicommon=1.1.0=hd74edd7_2
  - libbrotlidec=1.1.0=hd74edd7_2
  - libbrotlienc=1.1.0=hd74edd7_2
  - libcblas=3.9.0=31_hb3479ef_openblas
  - libclang-cpp18.1=18.1.8=default_hf90f093_8
  - libcrc32c=1.1.2=hbdafb3b_0
  - libcurl=8.13.0=h73640d1_0
  - libcxx=20.1.2=ha82da77_0
  - libcxx-devel=18.1.8=h6dc3340_8
  - libdeflate=1.23=hec38601_0
  - libedit=3.1.20250104=pl5321hafb1f1b_0
  - libev=4.33=h93a5062_2
  - libexpat=2.7.0=h286801f_0
  - libffi=3.4.6=h1da3d7d_1
  - libgd=2.3.3=hb2c3a21_11
  - libgfortran=5.0.0=14_2_0_h6c33f7e_2
  - libgfortran5=14.2.0=h6c33f7e_2
  - libglib=2.84.0=hdff4504_0
  - libgoogle-cloud=2.36.0=h9484b08_1
  - libgoogle-cloud-storage=2.36.0=h7081f7f_1
  - libgrpc=1.71.0=hf667ad3_0
  - libiconv=1.18=hfe07756_1
  - libintl=0.23.1=h493aca8_0
  - libjpeg-turbo=3.0.0=hb547adb_1
  - liblapack=3.9.0=31_hc9a63f6_openblas
  - liblapacke=3.9.0=31_hbb7bcf8_openblas
  - libllvm18=18.1.8=hc4b4ae8_3
  - liblzma=5.6.4=h39f12f2_0
  - libmpdec=4.0.0=h99b78c6_0
  - libnghttp2=1.64.0=h6d7220d_0
  - libopenblas=0.3.29=openmp_hf332438_0
  - libopentelemetry-cpp=1.19.0=h0181452_0
  - libopentelemetry-cpp-headers=1.19.0=hce30654_0
  - libpng=1.6.47=h3783ad8_0
  - libprotobuf=5.29.3=hccd9074_0
  - libre2-11=2024.07.02=hd41c47c_3
  - librsvg=2.58.4=h266df6f_3
  - libsodium=1.0.20=h99b78c6_0
  - libsqlite=3.49.1=h3f77e49_2
  - libssh2=1.11.1=h9cc3647_0
  - libtiff=4.7.0=h551f018_3
  - libtorch=2.6.0=cpu_generic_hb48c3f1_3
  - libutf8proc=2.10.0=hda25de7_0
  - libuv=1.50.0=h5505292_0
  - libwebp-base=1.5.0=h2471fea_0
  - libxcb=1.17.0=hdb1d25a_0
  - libxml2=2.13.7=h178c5d8_0
  - libzlib=1.3.1=h8359307_2
  - llvm-openmp=20.1.2=hdb05f8b_0
  - llvm-tools=18.1.8=hc4b4ae8_3
  - llvm-tools-18=18.1.8=hc4b4ae8_3
  - logical-unification=0.4.6=pyhd8ed1ab_0
  - lz4-c=1.10.0=h286801f_1
  - macosx_deployment_target_osx-arm64=11.0=h6553868_2
  - markdown-it-py=3.0.0=pyhd8ed1ab_1
  - markupsafe=3.0.2=py313ha9b7d5b_1
  - matplotlib-base=3.10.1=py313haaf02c0_0
  - matplotlib-inline=0.1.7=pyhd8ed1ab_1
  - mdurl=0.1.2=pyhd8ed1ab_1
  - minikanren=1.0.3=pyhd8ed1ab_1
  - ml_dtypes=0.5.1=py313h668b085_0
  - mpc=1.3.1=h8f1351a_1
  - mpfr=4.2.1=hb693164_3
  - mpmath=1.3.0=pyhd8ed1ab_1
  - multipledispatch=0.6.0=pyhd8ed1ab_1
  - munkres=1.1.4=pyh9f0ad1d_0
  - ncurses=6.5=h5e97a16_3
  - nest-asyncio=1.6.0=pyhd8ed1ab_1
  - networkx=3.4.2=pyh267e887_2
  - nlohmann_json=3.11.3=h00cdb27_1
  - nomkl=1.0=h5ca1d4c_0
  - numpy=2.2.4=py313h41a2e72_0
  - nutpie=0.14.3=py313hdde674f_0
  - openblas=0.3.29=openmp_hea878ba_0
  - openjpeg=2.5.3=h8a3d83b_0
  - openssl=3.4.1=h81ee809_0
  - opt_einsum=3.4.0=pyhd8ed1ab_1
  - optax=0.2.4=pyhd8ed1ab_1
  - optree=0.14.1=py313h0ebd0e5_1
  - orc=2.1.1=hd90e43c_1
  - packaging=24.2=pyhd8ed1ab_2
  - pandas=2.2.3=py313h47b39a6_1
  - pango=1.56.3=h5fd7515_1
  - parso=0.8.4=pyhd8ed1ab_1
  - patsy=1.0.1=pyhd8ed1ab_1
  - pcre2=10.44=h297a79d_2
  - pexpect=4.9.0=pyhd8ed1ab_1
  - pickleshare=0.7.5=pyhd8ed1ab_1004
  - pillow=11.1.0=py313hb37fac4_0
  - pip=25.0.1=pyh145f28c_0
  - pixman=0.44.2=h2f9eb0b_0
  - platformdirs=4.3.7=pyh29332c3_0
  - prometheus-cpp=1.3.0=h0967b3e_0
  - prompt-toolkit=3.0.50=pyha770c72_0
  - psutil=7.0.0=py313h90d716c_0
  - pthread-stubs=0.4=hd74edd7_1002
  - ptyprocess=0.7.0=pyhd8ed1ab_1
  - pure_eval=0.2.3=pyhd8ed1ab_1
  - pyarrow-core=19.0.1=py313hf9431ad_0_cpu
  - pybind11=2.13.6=pyh1ec8472_2
  - pybind11-global=2.13.6=pyh415d2e4_2
  - pycparser=2.22=pyh29332c3_1
  - pygments=2.19.1=pyhd8ed1ab_0
  - pymc=5.21.1=hd8ed1ab_0
  - pymc-base=5.21.1=pyhd8ed1ab_0
  - pyparsing=3.2.3=pyhd8ed1ab_1
  - pysocks=1.7.1=pyha55dd90_7
  - pytensor=2.28.3=py313hcf14097_1
  - pytensor-base=2.28.3=py313h668b085_1
  - python=3.13.2=h81fe080_101_cp313
  - python-dateutil=2.9.0.post0=pyhff2d567_1
  - python-graphviz=0.20.3=pyh91182bf_2
  - python-tzdata=2025.2=pyhd8ed1ab_0
  - python_abi=3.13=6_cp313
  - pytorch=2.6.0=cpu_generic_py313_h386d6f0_3
  - pytz=2024.1=pyhd8ed1ab_0
  - pyyaml=6.0.2=py313ha9b7d5b_2
  - pyzmq=26.3.0=py313he6960b1_0
  - qhull=2020.2=h420ef59_5
  - re2=2024.07.02=h6589ca4_3
  - readline=8.2=h1d1bf99_2
  - requests=2.32.3=pyhd8ed1ab_1
  - rich=14.0.0=pyh29332c3_0
  - safetensors=0.5.3=py313hdde674f_0
  - scipy=1.15.2=py313h9a24e0a_0
  - seaborn=0.13.2=hd8ed1ab_3
  - seaborn-base=0.13.2=pyhd8ed1ab_3
  - setuptools=75.8.2=pyhff2d567_0
  - sigtool=0.1.3=h44b9a77_0
  - six=1.17.0=pyhd8ed1ab_0
  - sleef=3.8=h8391f65_0
  - snappy=1.2.1=h98b9ce2_1
  - stack_data=0.6.3=pyhd8ed1ab_1
  - statsmodels=0.14.4=py313h93df234_0
  - sympy=1.13.3=pyh2585a3b_105
  - tapi=1300.6.5=h03f4b80_0
  - threadpoolctl=3.6.0=pyhecae5ae_0
  - tk=8.6.13=h5083fa2_1
  - toolz=1.0.0=pyhd8ed1ab_1
  - tornado=6.4.2=py313h90d716c_0
  - tqdm=4.67.1=pyhd8ed1ab_1
  - traitlets=5.14.3=pyhd8ed1ab_1
  - typing-extensions=4.13.0=h9fa5a19_1
  - typing_extensions=4.13.0=pyh29332c3_1
  - tzdata=2025b=h78e105d_0
  - urllib3=2.3.0=pyhd8ed1ab_0
  - wcwidth=0.2.13=pyhd8ed1ab_1
  - widgetsnbextension=4.0.13=pyhd8ed1ab_1
  - xarray=2025.3.1=pyhd8ed1ab_0
  - xarray-einstats=0.8.0=pyhd8ed1ab_1
  - xorg-libxau=1.0.12=h5505292_0
  - xorg-libxdmcp=1.1.5=hd74edd7_0
  - yaml=0.2.5=h3422bc3_2
  - zeromq=4.3.5=hc1bb282_7
  - zipp=3.21.0=pyhd8ed1ab_1
  - zlib=1.3.1=h8359307_2
  - zstandard=0.23.0=py313h90d716c_1
  - zstd=1.5.7=h6491c7d_2
prefix: /Users/user/bin/miniconda3/envs/simple-sample

Maybe someone has seen the same issue already and knows how to resolve it?
Best regards

1 Like

I’ve also created now created a test.py having only this content:

import pymc as pm
with pm.Model() as model:
    alpha = pm.Normal('alpha', mu=0, sigma=1)
    pm.Normal('Est', mu=alpha, sigma=1, observed=0)
    pm.sample()

I then used a fresh terminal, switched to my environment and started it by executing python test.py with the following results

Initializing NUTS using jitter+adapt_diag...

You can find the C code in this temporary file: /var/folders/zq/b1tykq9j6qv4x531tbjvm9500000gn/T/pytensor_compilation_error_jmk3o_7h
library to_library is not found.
ERROR (pytensor.graph.rewriting.basic): Rewrite failure due to: constant_folding
ERROR (pytensor.graph.rewriting.basic): node: Cast{float64}(0)
ERROR (pytensor.graph.rewriting.basic): TRACEBACK:
ERROR (pytensor.graph.rewriting.basic): Traceback (most recent call last):
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/graph/rewriting/basic.py", line 1922, in process_node
   replacements = node_rewriter.transform(fgraph, node)
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/graph/rewriting/basic.py", line 1086, in transform
   return self.fn(fgraph, node)
          ~~~~~~~^^^^^^^^^^^^^^
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/tensor/rewriting/basic.py", line 1173, in constant_folding
   return unconditional_constant_folding.transform(fgraph, node)
          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/graph/rewriting/basic.py", line 1086, in transform
   return self.fn(fgraph, node)
          ~~~~~~~^^^^^^^^^^^^^^
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/tensor/rewriting/basic.py", line 1122, in unconditional_constant_folding
   thunk = node.op.make_thunk(node, storage_map, compute_map, no_recycling=[])
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/op.py", line 119, in make_thunk
   return self.make_c_thunk(node, storage_map, compute_map, no_recycling)
          ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/op.py", line 84, in make_c_thunk
   outputs = cl.make_thunk(
       input_storage=node_input_storage, output_storage=node_output_storage
   )
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/basic.py", line 1185, in make_thunk
   cthunk, module, in_storage, out_storage, error_storage = self.__compile__(
                                                            ~~~~~~~~~~~~~~~~^
       input_storage, output_storage, storage_map, cache
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   )
   ^
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/basic.py", line 1102, in __compile__
   thunk, module = self.cthunk_factory(
                   ~~~~~~~~~~~~~~~~~~~^
       error_storage,
       ^^^^^^^^^^^^^^
   ...<3 lines>...
       cache,
       ^^^^^^
   )
   ^
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/basic.py", line 1626, in cthunk_factory
   module = cache.module_from_key(key=key, lnk=self)
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/cmodule.py", line 1250, in module_from_key
   module = lnk.compile_cmodule(location)
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/basic.py", line 1527, in compile_cmodule
   module = c_compiler.compile_str(
       module_name=mod.code_hash,
   ...<5 lines>...
       preargs=preargs,
   )
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/cmodule.py", line 2676, in compile_str
   raise CompileError(
       f"Compilation failed (return status={status}):\n{' '.join(cmd)}\n{compile_stderr}"
   )
pytensor.link.c.exceptions.CompileError: Compilation failed (return status=1):
/Users/user/bin/miniconda3/envs/simple-sample/bin/clang++ -dynamiclib -g -O3 -fno-math-errno -Wno-unused-label -Wno-unused-variable -Wno-write-strings -Wno-c++11-narrowing -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION -fPIC -undefined dynamic_lookup -ld64 -I/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/numpy/_core/include -I/Users/user/bin/miniconda3/envs/simple-sample/include/python3.13 -I/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/c_code -L/Users/user/bin/miniconda3/envs/simple-sample/lib -fvisibility=hidden -o /Users/user/.pytensor/compiledir_macOS-15.4-arm64-arm-64bit-Mach-O-arm-3.13.2-64/tmp8323dpls/m300014ab234446dc184b72b5e07d4663d2813454bb33582d49f5e173c77f73aa.so /Users/user/.pytensor/compiledir_macOS-15.4-arm64-arm-64bit-Mach-O-arm-3.13.2-64/tmp8323dpls/mod.cpp
ld: -lto_library library filename must be 'libLTO.dylib'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)



You can find the C code in this temporary file: /var/folders/zq/b1tykq9j6qv4x531tbjvm9500000gn/T/pytensor_compilation_error_s4bb2u9v
library to_library is not found.
ERROR (pytensor.graph.rewriting.basic): Rewrite failure due to: constant_folding
ERROR (pytensor.graph.rewriting.basic): node: Cast{float64}(0)
ERROR (pytensor.graph.rewriting.basic): TRACEBACK:
ERROR (pytensor.graph.rewriting.basic): Traceback (most recent call last):
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/graph/rewriting/basic.py", line 1922, in process_node
   replacements = node_rewriter.transform(fgraph, node)
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/graph/rewriting/basic.py", line 1086, in transform
   return self.fn(fgraph, node)
          ~~~~~~~^^^^^^^^^^^^^^
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/tensor/rewriting/basic.py", line 1173, in constant_folding
   return unconditional_constant_folding.transform(fgraph, node)
          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/graph/rewriting/basic.py", line 1086, in transform
   return self.fn(fgraph, node)
          ~~~~~~~^^^^^^^^^^^^^^
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/tensor/rewriting/basic.py", line 1122, in unconditional_constant_folding
   thunk = node.op.make_thunk(node, storage_map, compute_map, no_recycling=[])
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/op.py", line 119, in make_thunk
   return self.make_c_thunk(node, storage_map, compute_map, no_recycling)
          ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/op.py", line 84, in make_c_thunk
   outputs = cl.make_thunk(
       input_storage=node_input_storage, output_storage=node_output_storage
   )
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/basic.py", line 1185, in make_thunk
   cthunk, module, in_storage, out_storage, error_storage = self.__compile__(
                                                            ~~~~~~~~~~~~~~~~^
       input_storage, output_storage, storage_map, cache
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   )
   ^
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/basic.py", line 1102, in __compile__
   thunk, module = self.cthunk_factory(
                   ~~~~~~~~~~~~~~~~~~~^
       error_storage,
       ^^^^^^^^^^^^^^
   ...<3 lines>...
       cache,
       ^^^^^^
   )
   ^
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/basic.py", line 1626, in cthunk_factory
   module = cache.module_from_key(key=key, lnk=self)
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/cmodule.py", line 1250, in module_from_key
   module = lnk.compile_cmodule(location)
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/basic.py", line 1527, in compile_cmodule
   module = c_compiler.compile_str(
       module_name=mod.code_hash,
   ...<5 lines>...
       preargs=preargs,
   )
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/cmodule.py", line 2676, in compile_str
   raise CompileError(
       f"Compilation failed (return status={status}):\n{' '.join(cmd)}\n{compile_stderr}"
   )
pytensor.link.c.exceptions.CompileError: Compilation failed (return status=1):
/Users/user/bin/miniconda3/envs/simple-sample/bin/clang++ -dynamiclib -g -O3 -fno-math-errno -Wno-unused-label -Wno-unused-variable -Wno-write-strings -Wno-c++11-narrowing -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION -fPIC -undefined dynamic_lookup -ld64 -I/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/numpy/_core/include -I/Users/user/bin/miniconda3/envs/simple-sample/include/python3.13 -I/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/c_code -L/Users/user/bin/miniconda3/envs/simple-sample/lib -fvisibility=hidden -o /Users/user/.pytensor/compiledir_macOS-15.4-arm64-arm-64bit-Mach-O-arm-3.13.2-64/tmposmo2yo1/m300014ab234446dc184b72b5e07d4663d2813454bb33582d49f5e173c77f73aa.so /Users/user/.pytensor/compiledir_macOS-15.4-arm64-arm-64bit-Mach-O-arm-3.13.2-64/tmposmo2yo1/mod.cpp
ld: -lto_library library filename must be 'libLTO.dylib'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)



You can find the C code in this temporary file: /var/folders/zq/b1tykq9j6qv4x531tbjvm9500000gn/T/pytensor_compilation_error_nczabxoc
library to_library is not found.
ERROR (pytensor.graph.rewriting.basic): Rewrite failure due to: constant_folding
ERROR (pytensor.graph.rewriting.basic): node: Cast{float64}(0)
ERROR (pytensor.graph.rewriting.basic): TRACEBACK:
ERROR (pytensor.graph.rewriting.basic): Traceback (most recent call last):
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/graph/rewriting/basic.py", line 1922, in process_node
   replacements = node_rewriter.transform(fgraph, node)
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/graph/rewriting/basic.py", line 1086, in transform
   return self.fn(fgraph, node)
          ~~~~~~~^^^^^^^^^^^^^^
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/tensor/rewriting/basic.py", line 1173, in constant_folding
   return unconditional_constant_folding.transform(fgraph, node)
          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/graph/rewriting/basic.py", line 1086, in transform
   return self.fn(fgraph, node)
          ~~~~~~~^^^^^^^^^^^^^^
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/tensor/rewriting/basic.py", line 1122, in unconditional_constant_folding
   thunk = node.op.make_thunk(node, storage_map, compute_map, no_recycling=[])
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/op.py", line 119, in make_thunk
   return self.make_c_thunk(node, storage_map, compute_map, no_recycling)
          ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/op.py", line 84, in make_c_thunk
   outputs = cl.make_thunk(
       input_storage=node_input_storage, output_storage=node_output_storage
   )
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/basic.py", line 1185, in make_thunk
   cthunk, module, in_storage, out_storage, error_storage = self.__compile__(
                                                            ~~~~~~~~~~~~~~~~^
       input_storage, output_storage, storage_map, cache
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   )
   ^
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/basic.py", line 1102, in __compile__
   thunk, module = self.cthunk_factory(
                   ~~~~~~~~~~~~~~~~~~~^
       error_storage,
       ^^^^^^^^^^^^^^
   ...<3 lines>...
       cache,
       ^^^^^^
   )
   ^
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/basic.py", line 1626, in cthunk_factory
   module = cache.module_from_key(key=key, lnk=self)
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/cmodule.py", line 1250, in module_from_key
   module = lnk.compile_cmodule(location)
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/basic.py", line 1527, in compile_cmodule
   module = c_compiler.compile_str(
       module_name=mod.code_hash,
   ...<5 lines>...
       preargs=preargs,
   )
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/cmodule.py", line 2676, in compile_str
   raise CompileError(
       f"Compilation failed (return status={status}):\n{' '.join(cmd)}\n{compile_stderr}"
   )
pytensor.link.c.exceptions.CompileError: Compilation failed (return status=1):
/Users/user/bin/miniconda3/envs/simple-sample/bin/clang++ -dynamiclib -g -O3 -fno-math-errno -Wno-unused-label -Wno-unused-variable -Wno-write-strings -Wno-c++11-narrowing -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION -fPIC -undefined dynamic_lookup -ld64 -I/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/numpy/_core/include -I/Users/user/bin/miniconda3/envs/simple-sample/include/python3.13 -I/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/c_code -L/Users/user/bin/miniconda3/envs/simple-sample/lib -fvisibility=hidden -o /Users/user/.pytensor/compiledir_macOS-15.4-arm64-arm-64bit-Mach-O-arm-3.13.2-64/tmpxkvum85s/m300014ab234446dc184b72b5e07d4663d2813454bb33582d49f5e173c77f73aa.so /Users/user/.pytensor/compiledir_macOS-15.4-arm64-arm-64bit-Mach-O-arm-3.13.2-64/tmpxkvum85s/mod.cpp
ld: -lto_library library filename must be 'libLTO.dylib'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)



You can find the C code in this temporary file: /var/folders/zq/b1tykq9j6qv4x531tbjvm9500000gn/T/pytensor_compilation_error_3q4fs5ll
library to_library is not found.
Traceback (most recent call last):
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/lazylinker_c.py", line 66, in <module>
   raise ImportError(
   ...<3 lines>...
   )
ImportError: Version check of the existing lazylinker compiled file. Looking for version 0.3, but found None. Extra debug information: force_compile=False, _need_reload=True

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/lazylinker_c.py", line 87, in <module>
   raise ImportError(
   ...<3 lines>...
   )
ImportError: Version check of the existing lazylinker compiled file. Looking for version 0.3, but found None. Extra debug information: force_compile=False, _need_reload=True

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
 File "/Users/user/git/use-cases/test.py", line 5, in <module>
   pm.sample()
   ~~~~~~~~~^^
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pymc/sampling/mcmc.py", line 832, in sample
   initial_points, step = init_nuts(
                          ~~~~~~~~~^
       init=init,
       ^^^^^^^^^^
   ...<9 lines>...
       **kwargs,
       ^^^^^^^^^
   )
   ^
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pymc/sampling/mcmc.py", line 1598, in init_nuts
   logp_dlogp_func = model.logp_dlogp_function(ravel_inputs=True, **compile_kwargs)
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pymc/model/core.py", line 566, in logp_dlogp_function
   initial_point = self.initial_point(0)
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pymc/model/core.py", line 1041, in initial_point
   fn = make_initial_point_fn(model=self, return_transformed=True)
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pymc/initial_point.py", line 170, in make_initial_point_fn
   func = compile(inputs=[], outputs=initial_values, mode=pytensor.compile.mode.FAST_COMPILE)
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pymc/pytensorf.py", line 947, in compile
   pytensor_function = pytensor.function(
       inputs,
   ...<3 lines>...
       **kwargs,
   )
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/compile/function/__init__.py", line 332, in function
   fn = pfunc(
       params=inputs,
   ...<12 lines>...
       trust_input=trust_input,
   )
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/compile/function/pfunc.py", line 472, in pfunc
   return orig_function(
       inputs,
   ...<8 lines>...
       trust_input=trust_input,
   )
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/compile/function/types.py", line 1833, in orig_function
   fn = m.create(defaults)
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/compile/function/types.py", line 1717, in create
   _fn, _i, _o = self.linker.make_thunk(
                 ~~~~~~~~~~~~~~~~~~~~~~^
       input_storage=input_storage_lists, storage_map=storage_map
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   )
   ^
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/basic.py", line 245, in make_thunk
   return self.make_all(
          ~~~~~~~~~~~~~^
       input_storage=input_storage,
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       output_storage=output_storage,
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       storage_map=storage_map,
       ^^^^^^^^^^^^^^^^^^^^^^^^
   )[:3]
   ^
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/vm.py", line 1285, in make_all
   vm = self.make_vm(
       order,
   ...<7 lines>...
       self.updated_vars,
   )
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/vm.py", line 1013, in make_vm
   from pytensor.link.c.cvm import CVM
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/cvm.py", line 13, in <module>
   from pytensor.link.c.lazylinker_c import CLazyLinker
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/lazylinker_c.py", line 122, in <module>
   GCC_compiler.compile_str(dirname, code, location=loc, preargs=args)
   ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/cmodule.py", line 2676, in compile_str
   raise CompileError(
       f"Compilation failed (return status={status}):\n{' '.join(cmd)}\n{compile_stderr}"
   )
pytensor.link.c.exceptions.CompileError: Compilation failed (return status=1):
/Users/user/bin/miniconda3/envs/simple-sample/bin/clang++ -dynamiclib -g -Wno-c++11-narrowing -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION -fPIC -undefined dynamic_lookup -ld64 -I/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/numpy/_core/include -I/Users/user/bin/miniconda3/envs/simple-sample/include/python3.13 -I/Users/user/bin/miniconda3/envs/simple-sample/lib/python3.13/site-packages/pytensor/link/c/c_code -L/Users/user/bin/miniconda3/envs/simple-sample/lib -fvisibility=hidden -o /Users/user/.pytensor/compiledir_macOS-15.4-arm64-arm-64bit-Mach-O-arm-3.13.2-64/lazylinker_ext/lazylinker_ext.so /Users/user/.pytensor/compiledir_macOS-15.4-arm64-arm-64bit-Mach-O-arm-3.13.2-64/lazylinker_ext/mod.cpp
ld: -lto_library library filename must be 'libLTO.dylib'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)

So not related to VS Code which I am normally using.

Hi, @shark7760. I think this is related to a misconfiguration in your environment. Can you check what version of c++ your environment is running by executing gcc --version in a terminal. Also, check your Xcode version by executing pkgutil --pkg-info=com.apple.pkg.CLTools_Executables.

I would also encourage you to build a new environment with ONLY pymc at first and check if that is working.

Hey @Dekermanjian ,

sure thing, here are the logs:

gcc --version
Apple clang version 17.0.0 (clang-1700.0.13.3)
Target: arm64-apple-darwin24.4.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

and

pkgutil --pkg-info=com.apple.pkg.CLTools_Executables
package-id: com.apple.pkg.CLTools_Executables
version: 16.3.0.0.1.1742442376
volume: /
location: /
install-time: 1743668208

I’ve also followed your advise and created a fresh environment with only pymc as follows:

conda create -c conda-forge -n pymc-only
conda activate pymc-only
conda install -c conda-forge -y pymc
python test.py

The output is unfortunately similar to my second post.

Best regards!

Hey @shark7760, can you try adding this to the top of your script before you start sampling:

import pytensor
pytensor.config.cxx = '/usr/bin/clang++'
4 Likes

Hey @Dekermanjian ,

that seems to do the trick!

python test.py                          
Initializing NUTS using jitter+adapt_diag...
Multiprocess sampling (4 chains in 4 jobs)
NUTS: [alpha]
                                                                                                                                    
  Progress                                   Draws   Divergences   Step size   Grad evals   Sampling Speed     Elapsed   Remaining  
 ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━   2000    0             1.22        1            12627.35 draws/s   0:00:00   0:00:00    
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━   2000    0             1.65        3            11821.93 draws/s   0:00:00   0:00:00    
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━   2000    0             0.87        1            10709.86 draws/s   0:00:00   0:00:00    
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━   2000    0             1.54        1            8380.20 draws/s    0:00:00   0:00:00    
                                                                                                                                    
Sampling 4 chains for 1_000 tune and 1_000 draw iterations (4_000 + 4_000 draws total) took 0 seconds.

I flagged your post now as the “Solution”, but I also like to understand why this works now. So bin/miniconda3/envs/pymc-only/bin/clang++ seems to be broken, right?

This smells like an xtools problem. Seems like the path to your C compiler is wrong.

If you can’t fix it and need to manually specify the compiler path, you can make a .pytensorrc file in your home directory and put the gxx path in there so you don’t have to do it every time you make a model. Docs here.

3 Likes

Came to say that I also experienced this issue after upgrading to Mac OS 15.4. The accepted solution PyTensor fails to compile model after upgrading to mac OS 15.4 - #5 by Dekermanjian also worked for me.

1 Like

Hey @jessegrabowski ,

thank you for this hint. It definitely makes sense to put it there. Especially when you are working with other colleagues, because you don’t want to set it for everyone.

This is how it looks now on my end:

cat ~/.pytensorrc
[global]
cxx=/usr/bin/clang++

Best regards & thank you for your quick help @Dekermanjian and @jessegrabowski !

3 Likes

I just upgraded my macbook and hit these problems. Just changing the clang path was not sufficient to get things back up and running. Here is a record of all the steps I took to get back to work. I have no idea which are necessary.

  1. Reinstall xcode commandline tools
sudo rm -rf /Library/Developer/CommandLineTools/
xcode-select --install
  1. Clear old SDKs
    ls /Library/Developer/CommandLineTools/SDKs showed a bunch of flotsam and jetsam. The only SDK that is needed is the latest one, MacOSX15.4.sdk. I did rm -rf on all the others.

At this point, which clang++ correctly showed /usr/bin/clang++, so the change to .pytensorrc was not necessary.

Other diagnostics that seem important are:

  • xcrun --show-sdk-path should show /Library/Developer/CommandLineTools/SDKs/MacOSX15.4.sdk
  • xcode-select -p should show `/Library/Developer/CommandLineTools

Back to pytensor steps:

  1. Nuke and reinstall all environments
    I also hit some errors with pandas and numpy, so this was necessary.

  2. Purge pytensor cache
    From an active environment with pytensor installed, do:

pytensor-cache purge
  1. Uninstall other clang tools installed by conda
    When conda installed pytensor, it also brought along a bunch of clang compilers. I removed all of these with:
conda list clang

# Name                    Version                   Build  Channel
clang                     18.1.8          default_h474c9e2_9    conda-forge
clang-18                  18.1.8          default_hf90f093_9    conda-forge
clang_impl_osx-arm64      18.1.8              h2ae9ea5_24    conda-forge
clang_osx-arm64           18.1.8              h07b0088_24    conda-forge
clangxx                   18.1.8          default_h1ffe849_9    conda-forge
clangxx_impl_osx-arm64    18.1.8              h555f467_24    conda-forge
clangxx_osx-arm64         18.1.8              h07b0088_24    conda-forge
libclang-cpp18.1          18.1.8          default_hf90f093_9    conda-forge
conda remove clang clang-18 clang_impl_osx-arm64 clang_osx-arm64 clangxx clangxx_impl_osx-arm64 clangxx_osx-arm64 libclang-cpp18.1 --force

After this, things were working again.

2 Likes

Hey @jessegrabowski, unrelated to the main post, but what does the pytensor-cache actually cache? The computational graphs? Also, is there a no-cache option available?

It caches the C-implementation of Ops. Things will be much slower if you disable caching

1 Like

Thanks @jessegrabowski , super helpful!
No idea which ones are necessary either, even though “just” reinstalling xcode commandline tools and removing conda related clang packages was sufficient to get me back up and running :man_shrugging:

I will report back if I hit this issue again, and if your specific steps helped me solve it or not.

I also gather from your description that you’re using conda, not pixi. For those who do, note that there is a very weird issue with numpy, which disappears when you force pixi to install numpy from pip instead of conda-forge (but installing numpy from conda-forge in a conda environment does work; don’t ask me why :man_shrugging: ).

Morals of the story:

  • In the short term: Wait for a few weeks before updating to any new version of MacOS (the lucky ones still on 15.3.X should definitely do that!)
  • In the long term: Just buy Framework laptops, not Macs :see_no_evil_monkey:

Hope this helps :vulcan_salute: