pymc
pymc copied to clipboard
netCDF4 import error on M1 macOS: `symbol not found in flat namespace '_H5get_libversion'`
Description of your problem
Please provide a minimal, self-contained, and reproducible example.
import pymc as pm
Please provide the full traceback.
running on mac m1 - installed pymc but can't import pymc - getting an error
ImportError Traceback (most recent call last)
Input In [1], in <cell line: 1>()
----> 1 import pymc as pm
File /opt/homebrew/lib/python3.9/site-packages/pymc/init.py:52, in
47 aesara.config.gcc__cxxflags = augmented
50 __set_compiler_flags()
---> 52 from pymc import gp, ode, sampling
53 from pymc.aesaraf import *
54 from pymc.backends import *
File /opt/homebrew/lib/python3.9/site-packages/pymc/gp/init.py:15, in
1 # Copyright 2020 The PyMC Developers
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
(...)
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
---> 15 from pymc.gp import cov, mean, util
16 from pymc.gp.gp import (
17 TP,
18 Latent,
(...)
23 MarginalSparse,
24 )
File /opt/homebrew/lib/python3.9/site-packages/pymc/gp/util.py:37, in
34 from pymc.aesaraf import compile_pymc, walk_model
36 # Avoid circular dependency when importing modelcontext
---> 37 from pymc.distributions.distribution import NoDistribution
39 assert NoDistribution # keep both pylint and black happy
40 from pymc.model import modelcontext
File /opt/homebrew/lib/python3.9/site-packages/pymc/distributions/init.py:21, in
1 # Copyright 2020 The PyMC Developers
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
(...)
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
15 from pymc.distributions.logprob import ( # isort:skip
16 logcdf,
17 logp,
18 joint_logpt,
19 )
---> 21 from pymc.distributions.bound import Bound
22 from pymc.distributions.censored import Censored
23 from pymc.distributions.continuous import (
24 AsymmetricLaplace,
25 Beta,
(...)
57 Weibull,
58 )
File /opt/homebrew/lib/python3.9/site-packages/pymc/distributions/bound.py:23, in
20 from aesara.tensor.var import TensorVariable
22 from pymc.aesaraf import floatX, intX
---> 23 from pymc.distributions.continuous import BoundedContinuous, bounded_cont_transform
24 from pymc.distributions.dist_math import check_parameters
25 from pymc.distributions.distribution import Continuous, Discrete
File /opt/homebrew/lib/python3.9/site-packages/pymc/distributions/continuous.py:88, in
76 from pymc.distributions import transforms
77 from pymc.distributions.dist_math import (
78 SplineWrapper,
79 check_parameters,
(...)
86 zvalue,
87 )
---> 88 from pymc.distributions.distribution import DIST_PARAMETER_TYPES, Continuous
89 from pymc.distributions.shape_utils import rv_size_is_none
90 from pymc.distributions.transforms import _default_transform
File /opt/homebrew/lib/python3.9/site-packages/pymc/distributions/distribution.py:50, in
36 from pymc.aesaraf import change_rv_size
37 from pymc.distributions.shape_utils import (
38 Dims,
39 Shape,
(...)
48 resize_from_observed,
49 )
---> 50 from pymc.printing import str_for_dist, str_for_symbolic_dist
51 from pymc.util import UNSET
52 from pymc.vartypes import string_types
File /opt/homebrew/lib/python3.9/site-packages/pymc/printing.py:25, in
22 from aesara.tensor.random.basic import RandomVariable
23 from aesara.tensor.var import TensorConstant
---> 25 from pymc.model import Model
27 all = [
28 "str_for_dist",
29 "str_for_model",
30 "str_for_potential_or_deterministic",
31 ]
34 def str_for_dist(rv: TensorVariable, formatting: str = "plain", include_params: bool = True) -> str:
File /opt/homebrew/lib/python3.9/site-packages/pymc/model.py:64, in
62 from pymc.distributions.transforms import _default_transform
63 from pymc.exceptions import ImputationWarning, SamplingError, ShapeError, ShapeWarning
---> 64 from pymc.initial_point import make_initial_point_fn
65 from pymc.math import flatten_list
66 from pymc.util import (
67 UNSET,
68 WithMemoization,
(...)
72 treelist,
73 )
File /opt/homebrew/lib/python3.9/site-packages/pymc/initial_point.py:28, in
25 from aesara.tensor.var import TensorVariable
27 from pymc.aesaraf import compile_pymc, find_rng_nodes, reseed_rngs
---> 28 from pymc.util import get_transformed_name, get_untransformed_name, is_transformed_name
30 StartDict = Dict[Union[Variable, str], Union[np.ndarray, Variable, str]]
31 PointType = Dict[str, np.ndarray]
File /opt/homebrew/lib/python3.9/site-packages/pymc/util.py:19, in
15 import functools
17 from typing import Dict, List, Tuple, Union, cast
---> 19 import arviz
20 import cloudpickle
21 import numpy as np
File /opt/homebrew/lib/python3.9/site-packages/arviz/init.py:32, in
26 super()._log(level, msg, *args, **kwargs)
29 _log = Logger("arviz")
---> 32 from .data import *
33 from .plots import *
34 from .plots.backends import *
File /opt/homebrew/lib/python3.9/site-packages/arviz/data/init.py:3, in
1 """Code for loading and manipulating data structures."""
2 from .base import CoordSpec, DimSpec, dict_to_dataset, numpy_to_data_array
----> 3 from .converters import convert_to_dataset, convert_to_inference_data
4 from .datasets import clear_data_home, list_datasets, load_arviz_data
5 from .inference_data import InferenceData, concat
File /opt/homebrew/lib/python3.9/site-packages/arviz/data/converters.py:6, in
3 import xarray as xr
5 from .base import dict_to_dataset
----> 6 from .inference_data import InferenceData
7 from .io_cmdstan import from_cmdstan
8 from .io_cmdstanpy import from_cmdstanpy
File /opt/homebrew/lib/python3.9/site-packages/arviz/data/inference_data.py:27, in
12 import re
13 from typing import (
14 TYPE_CHECKING,
15 Any,
(...)
24 overload,
25 )
---> 27 import netCDF4 as nc
28 import numpy as np
29 import xarray as xr
File /opt/homebrew/lib/python3.9/site-packages/netCDF4/init.py:3, in
1 # init for netCDF4. package
2 # Docstring comes from extension module _netCDF4.
----> 3 from ._netCDF4 import *
4 # Need explicit imports for names beginning with underscores
5 from ._netCDF4 import doc
ImportError: dlopen(/opt/homebrew/lib/python3.9/site-packages/netCDF4/_netCDF4.cpython-39-darwin.so, 0x0002): symbol not found in flat namespace '_H5get_libversion'
Please provide any additional information below.
Versions and main components
- PyMC/PyMC3 Version: 4.0.0
- Aesara/Theano Version: aesara 2.6.6
- Python Version: 3.9.12
- Operating system: MacOs Monterey
- How did you install PyMC/PyMC3: (pip)
Same issue here with near identical setup, install and hardware.
Had similar issue. Installing from the macos-specific wheel helped me. Refer to this thread, especially towards the end of it.
@amChristonasis thank you!!! indeed it worked
solved it: brew install hdf5 netcdf git clone https://github.com/Unidata/netcdf4-python.git HDF5_DIR=$(brew --prefix hdf5) pip install ./netcdf4-python
@ohad-monday Nice to hear!
@amChristonasis thank you!!! indeed it worked
solved it: brew install hdf5 netcdf git clone https://github.com/Unidata/netcdf4-python.git HDF5_DIR=$(brew --prefix hdf5) pip install ./netcdf4-python
You can save yourself the git-clone step with,
HDF5_DIR=$(brew --prefix hdf5) pip install netcdf4 --no-binary :all:
Thanks a lot for this.
I originally tried this, but it did not work for me:
You can save yourself the git-clone step with,
HDF5_DIR=$(brew --prefix hdf5) pip install netcdf4 --no-binary :all:
However, this did:
solved it:
brew install hdf5 netcdf
git clone https://github.com/Unidata/netcdf4-python.git
HDF5_DIR=$(brew --prefix hdf5) pip install ./netcdf4-python
Perhaps it's worth just git cloning from the get go
Closing this as it doesn't sound like a PyMC issue and a workaround has been described in the comments
Hi to all commentators here, I refered to your solutions here to solve this error:
`File /Applications/anaconda3/envs/PET/lib/python3.9/site-packages/py_eddy_tracker/dataset/grid.py:10
8 from cv2 import filter2D
9 from matplotlib.path import Path as BasePath
---> 10 from netCDF4 import Dataset
11 from numba import njit, prange, types as numba_types
12 from numpy import (
13 arange,
14 array,
(...)
42 zeros,
43 )
File /Applications/anaconda3/envs/PET/lib/python3.9/site-packages/netCDF4/__init__.py:3
1 # init for netCDF4. package
2 # Docstring comes from extension module _netCDF4.
----> 3 from ._netCDF4 import *
4 # Need explicit imports for names beginning with underscores
5 from ._netCDF4 import __doc__
ImportError: dlopen(/Applications/anaconda3/envs/PET/lib/python3.9/site-packages/netCDF4/_netCDF4.cpython-39-darwin.so, 0x0002): symbol not found in flat namespace '_H5get_libversion'`
with no success, I tried both git cloning that resulted in :
`Building wheels for collected packages: netCDF4
Building wheel for netCDF4 (pyproject.toml) ... error
error: subprocess-exited-with-error
× Building wheel for netCDF4 (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [50 lines of output]
-L/opt/homebrew/Cellar/netcdf/4.9.2_1/lib -lnetcdf
reading from setup.cfg...
using nc-config...
checking /opt/homebrew/Cellar/netcdf/4.9.2_1/include...
hdf5 headers not found in /opt/homebrew/Cellar/netcdf/4.9.2_1/include
nc-config did provide path to HDF5 headers, search standard locations...
checking /opt/homebrew/opt/hdf5/include...
HDF5 library version: 1.14.3 headers found in /opt/homebrew/opt/hdf5/include
HDF5 library version: 1.14.3 found in /opt/homebrew/opt/hdf5
using netcdf library version b'4.9.2'
using Cython to compile netCDF4.pyx...
netcdf lib does not have parallel functions
NETCDF_PLUGIN_DIR not set, no netcdf compression plugins installed
running bdist_wheel
running build
running build_py
creating build
creating build/lib.macosx-11.1-arm64-cpython-311
creating build/lib.macosx-11.1-arm64-cpython-311/netCDF4
copying src/netCDF4/__init__.py -> build/lib.macosx-11.1-arm64-cpython-311/netCDF4
copying src/netCDF4/utils.py -> build/lib.macosx-11.1-arm64-cpython-311/netCDF4
running egg_info
writing src/netCDF4.egg-info/PKG-INFO
writing dependency_links to src/netCDF4.egg-info/dependency_links.txt
writing entry points to src/netCDF4.egg-info/entry_points.txt
writing requirements to src/netCDF4.egg-info/requires.txt
writing top-level names to src/netCDF4.egg-info/top_level.txt
reading manifest file 'src/netCDF4.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no previously-included files found matching 'examples/data'
warning: no previously-included files found matching 'src/netCDF4/_netCDF4.c'
adding license file 'LICENSE'
writing manifest file 'src/netCDF4.egg-info/SOURCES.txt'
copying src/netCDF4/_netCDF4.pyx -> build/lib.macosx-11.1-arm64-cpython-311/netCDF4
creating build/lib.macosx-11.1-arm64-cpython-311/netCDF4/plugins
copying src/netCDF4/plugins/empty.txt -> build/lib.macosx-11.1-arm64-cpython-311/netCDF4/plugins
running build_ext
Compiling src/netCDF4/_netCDF4.pyx because it changed.
[1/1] Cythonizing src/netCDF4/_netCDF4.pyx
building 'netCDF4._netCDF4' extension
creating build/temp.macosx-11.1-arm64-cpython-311
creating build/temp.macosx-11.1-arm64-cpython-311/external
creating build/temp.macosx-11.1-arm64-cpython-311/external/nc_complex
creating build/temp.macosx-11.1-arm64-cpython-311/external/nc_complex/src
creating build/temp.macosx-11.1-arm64-cpython-311/src
creating build/temp.macosx-11.1-arm64-cpython-311/src/netCDF4
clang -DNDEBUG -fwrapv -O2 -Wall -fPIC -O2 -isystem /Applications/anaconda3/include -arch arm64 -fPIC -O2 -isystem /Applications/anaconda3/include -arch arm64 -DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION -DNC_COMPLEX_NO_EXPORT=1 -I/opt/homebrew/Cellar/netcdf/4.9.2_1/include -I/opt/homebrew/opt/hdf5/include -I/private/var/folders/rt/z9t34vnn4wzfcwhkjnphx6980000gn/T/pip-build-env-gd3c91ta/overlay/lib/python3.11/site-packages/numpy/core/include -Iinclude -Iexternal/nc_complex/include -Iexternal/nc_complex/include/generated_fallbacks -I/Applications/anaconda3/include/python3.11 -c external/nc_complex/src/nc_complex.c -o build/temp.macosx-11.1-arm64-cpython-311/external/nc_complex/src/nc_complex.o
clang: error: no such file or directory: 'external/nc_complex/src/nc_complex.c'
clang: error: no input files
error: command '/usr/bin/clang' failed with exit code 1
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for netCDF4
Failed to build netCDF4
ERROR: Could not build wheels for netCDF4, which is required to install pyproject.toml-based projects`
and using :
HDF5_DIR=$(brew --prefix hdf5) pip install netcdf4 --no-binary :all:
which succeeded but didn't solve the original error.. any insights from people who had this issue previously? tnx