Exception: ('Compilation failed (return status=1)... error after installing PyMC3 for the first time

I’m completely new to PyMC and this exception occurred after installing for the first time (with Anaconda) and trying to execute this basic example script.

System: Mac OS X 10.14.6

Steps taken to install:

conda create --name pymc python=3.9
conda activate pymc
conda install -c conda-forge pymc3
conda install ipython

Code entered into iPython console (note the warning after the first statement) and the full exception details:

Python 3.9.1 | packaged by conda-forge | (default, Jan 10 2021, 02:52:42) 
Type 'copyright', 'credits' or 'license' for more information
IPython 7.19.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: import pymc3 as pm
WARNING (theano.tensor.blas): Using NumPy C-API based implementation for BLAS functions.

In [2]: import numpy as np

In [3]: RANDOM_SEED = 8927
   ...: np.random.seed(RANDOM_SEED)

In [4]: # True parameter values
   ...: alpha, sigma = 1, 1
   ...: beta = [1, 2.5]
   ...: # Size of dataset
   ...: size = 100
   ...: # Predictor variable
   ...: X1 = np.random.randn(size)
   ...: X2 = np.random.randn(size) * 0.2
   ...: # Simulate outcome variable
   ...: Y = alpha + beta[0] * X1 + beta[1] * X2 + np.random.randn(size) * sigma

In [5]: basic_model = pm.Model()

In [6]: with basic_model:
   ...:     # Priors for unknown model parameters
   ...:     alpha = pm.Normal("alpha", mu=0, sigma=10)
   ...:     beta = pm.Normal("beta", mu=0, sigma=10, shape=2)
   ...:     sigma = pm.HalfNormal("sigma", sigma=1)
   ...:     # Expected value of outcome
   ...:     mu = alpha + beta[0] * X1 + beta[1] * X2
   ...:     # Likelihood (sampling distribution) of observations
   ...:     Y_obs = pm.Normal("Y_obs", mu=mu, sigma=sigma, observed=Y)

You can find the C code in this temporary file: /var/folders/y3/28pc8qrx3dd36zwcys8z1rzc0000gn/T/theano_compilation_error_ykos32pu
Exception                                 Traceback (most recent call last)
<ipython-input-6-b30e265ab1ff> in <module>
      3     # Priors for unknown model parameters
----> 4     alpha = pm.Normal("alpha", mu=0, sigma=10)
      5     beta = pm.Normal("beta", mu=0, sigma=10, shape=2)
      6     sigma = pm.HalfNormal("sigma", sigma=1)

/anaconda3/envs/pymc/lib/python3.9/site-packages/pymc3/distributions/distribution.py in __new__(cls, name, *args, **kwargs)
    119             dist = cls.dist(*args, **kwargs, shape=shape)
    120         else:
--> 121             dist = cls.dist(*args, **kwargs)
    122         return model.Var(name, dist, data, total_size, dims=dims)

/anaconda3/envs/pymc/lib/python3.9/site-packages/pymc3/distributions/distribution.py in dist(cls, *args, **kwargs)
    128     def dist(cls, *args, **kwargs):
    129         dist = object.__new__(cls)
--> 130         dist.__init__(*args, **kwargs)
    131         return dist

/anaconda3/envs/pymc/lib/python3.9/site-packages/pymc3/distributions/continuous.py in __init__(self, mu, sigma, tau, sd, **kwargs)
    488         self.mean = self.median = self.mode = self.mu = mu = tt.as_tensor_variable(floatX(mu))
--> 489         self.variance = 1.0 / self.tau
    491         assert_negative_support(sigma, "sigma", "Normal")

/anaconda3/envs/pymc/lib/python3.9/site-packages/theano/tensor/var.py in __rtruediv__(self, other)
    175     def __rtruediv__(self, other):
--> 176         return theano.tensor.basic.true_div(other, self)
    178     def __rfloordiv__(self, other):

/anaconda3/envs/pymc/lib/python3.9/site-packages/theano/graph/op.py in __call__(self, *inputs, **kwargs)
    252         if config.compute_test_value != "off":
--> 253             compute_test_value(node)
    255         if self.default_output is not None:

/anaconda3/envs/pymc/lib/python3.9/site-packages/theano/graph/op.py in compute_test_value(node)
    125     # Create a thunk that performs the computation
--> 126     thunk = node.op.make_thunk(node, storage_map, compute_map, no_recycling=[])
    127     thunk.inputs = [storage_map[v] for v in node.inputs]
    128     thunk.outputs = [storage_map[v] for v in node.outputs]

/anaconda3/envs/pymc/lib/python3.9/site-packages/theano/graph/op.py in make_thunk(self, node, storage_map, compute_map, no_recycling, impl)
    632             )
    633             try:
--> 634                 return self.make_c_thunk(node, storage_map, compute_map, no_recycling)
    635             except (NotImplementedError, MethodNotDefined):
    636                 # We requested the c code, so don't catch the error.

/anaconda3/envs/pymc/lib/python3.9/site-packages/theano/graph/op.py in make_c_thunk(self, node, storage_map, compute_map, no_recycling)
    598                 print(f"Disabling C code for {self} due to unsupported float16")
    599                 raise NotImplementedError("float16")
--> 600         outputs = cl.make_thunk(
    601             input_storage=node_input_storage, output_storage=node_output_storage
    602         )

/anaconda3/envs/pymc/lib/python3.9/site-packages/theano/link/c/basic.py in make_thunk(self, input_storage, output_storage, storage_map)
   1201         """
   1202         init_tasks, tasks = self.get_init_tasks()
-> 1203         cthunk, module, in_storage, out_storage, error_storage = self.__compile__(
   1204             input_storage, output_storage, storage_map
   1205         )

/anaconda3/envs/pymc/lib/python3.9/site-packages/theano/link/c/basic.py in __compile__(self, input_storage, output_storage, storage_map)
   1136         input_storage = tuple(input_storage)
   1137         output_storage = tuple(output_storage)
-> 1138         thunk, module = self.cthunk_factory(
   1139             error_storage,
   1140             input_storage,

/anaconda3/envs/pymc/lib/python3.9/site-packages/theano/link/c/basic.py in cthunk_factory(self, error_storage, in_storage, out_storage, storage_map)
   1632             for node in self.node_order:
   1633                 node.op.prepare_node(node, storage_map, None, "c")
-> 1634             module = get_module_cache().module_from_key(key=key, lnk=self)
   1636         vars = self.inputs + self.outputs + self.orphans

/anaconda3/envs/pymc/lib/python3.9/site-packages/theano/link/c/cmodule.py in module_from_key(self, key, lnk)
   1189             try:
   1190                 location = dlimport_workdir(self.dirname)
-> 1191                 module = lnk.compile_cmodule(location)
   1192                 name = module.__file__
   1193                 assert name.startswith(location)

/anaconda3/envs/pymc/lib/python3.9/site-packages/theano/link/c/basic.py in compile_cmodule(self, location)
   1541             try:
   1542                 _logger.debug(f"LOCATION {location}")
-> 1543                 module = c_compiler.compile_str(
   1544                     module_name=mod.code_hash,
   1545                     src_code=src_code,

/anaconda3/envs/pymc/lib/python3.9/site-packages/theano/link/c/cmodule.py in compile_str(module_name, src_code, location, include_dirs, lib_dirs, libs, preargs, py_module, hide_symbols)
   2544             # difficult to read.
   2545             compile_stderr = compile_stderr.replace("\n", ". ")
-> 2546             raise Exception(
   2547                 f"Compilation failed (return status={status}): {compile_stderr}"
   2548             )

Exception: ('Compilation failed (return status=1): ld: unknown option: -platform_version. clang-11: error: linker command failed with exit code 1 (use -v to see invocation). ', 'FunctionGraph(Elemwise{true_div,no_inplace}(TensorConstant{1.0}, TensorConstant{0.01}))')

Also, for info:

In [7]: import theano

In [8]: theano.__version__
Out[8]: '1.1.0'

Oh, I see now it says this on the getting started page:

Python 3.5 (or more recent); we recommend that new users install version 3.5

Is that right? So I should limit myself to Python 3.5?

@billtubbs That information is outdated. Here are the up-to date installation instructions: GitHub - pymc-devs/pymc3: Probabilistic Programming in Python: Bayesian Modeling and Probabilistic Machine Learning with Theano

Thanks. Any idea if it’s just the installation instructions that are out of date or whether the getting started tutorial script itself is out of date as well? This is not a great first-time experience for newcomers…

1 Like

I agree with you that it’s not the best first experience. We will update the instructions soon in there. The rest of the notebook seems to be up to date. Let us know if you find any issues.

I can confirm. I re-installed my environment with Python 3.8 (just to be safe) and the correct installation command linked to above and the getting started example works fine. Thanks for your assistance.

1 Like

Hi! I followed the instruction from Installation Guide (Windows) · pymc-devs/pymc3 Wiki · GitHub but still got the same issue. I’m using python3.8 in conda on Windows. Could someone point out what I could do wrong?


Hi I have also followed the windows installation instructions precisely and receive the following exception:

Exception: ('Compilation failed (return status=1): C:\Users\matth\AppData\Local\Temp\ccyTAp8a.s: Assembler messages:\r. C:\Users\matth\AppData\Local\Temp\ccyTAp8a.s:101: Error: invalid register for .seh_savexmm\r. ', ‘FunctionGraph(Elemwise{EQ}(<TensorType(float64, vector)>, <TensorType(int8, (True,))>))’)


Hi~ I got the same issue. Have you solved the problem? Even though I referred to the steps recommended by installation guide and response from issuses, there are still no ways to solve it.


I am always getting the same issue, has anybody managed to solve this?

I get the same errors even after following the instructions in all installation pages, and doing it multiple times, trying to use this package have been pretty hectic to be honest

Hi, is there any update on new installation procedure? i still get the same error.

I am getting a similar problem while flowing the installation instructions.

Exception: ("Compilation failed (return status=1): In file included from /Users/kanferg/.theano/compiledir_Darwin-19.6.0-x86_64-i386-64bit-i386-3.7.13-64/tmpzicwrzx5/mod.cpp:1:. In file included from /Users/kanferg/opt/anaconda3/envs/pm3_py37/include/python3.7m/Python.h:25:. /Users/kanferg/opt/anaconda3/envs/pm3_py37/bin/…/include/c++/v1/stdio.h:107:15: fatal error: ‘stdio.h’ file not found. #include_next <stdio.h>. ^~~~~~~~~. 1 error generated… ", ‘FunctionGraph(Elemwise{true_div,no_inplace}(TensorConstant{1.0}, TensorConstant{1.0}))’)

I am also having compilation issues on a first-time install on MacOS.

I’m on an M1 Mac running Monterey. Followed instructions here and am trying to run the “getting started” notebook.

Running on PyMC3 v3.11.4
Running on ArviZ v0.11.2

When I run the model line, compilation fails (see error message below). Based on similar StackOverflow threads (here) I’ve tried uninstalling / reinstalling / updating both the CLT and Xcode separately, to no avail.

Exception: ("Compilation failed (return status=1): ld: unsupported tapi file type ‘!tapi-tbd’ in YAML file ‘/Library/Developer/CommandLineTools/SDKs/MacOSX12.3.sdk/usr/lib/libSystem.tbd’ for architecture x86_64. clang-12: error: linker command failed with exit code 1 (use -v to see invocation). ", ‘FunctionGraph(Elemwise{true_div,no_inplace}(TensorConstant{1.0}, TensorConstant{1.0}))’)

This may be a red herring but the issue seems to be originating from the theano library-- which maybe should be pymc-theano based on the install instructions?

File ~/opt/anaconda3/envs/pymc3_env/lib/python3.9/site-packages/theano/tensor/var.py:176

Hello there,
I’m also a PyMC3 first-timer and I got the exact same error message as ted above, after following the latest installation instructions (running on MacOS Monterey).
I’d really love to use PyMC3, so if anyone knows what is going on, please step in. :slight_smile: