Issue getting diffpy-cmi installed on a Mac

210 views
Skip to first unread message

Ian Billinge

unread,
Jul 27, 2023, 3:33:32 PM7/27/23
to diffpy...@googlegroups.com
Hello everyone,

I am having trouble getting diffpy-cmi up and running on a Mac. I was wondering whether what I am facing is a known issue.

In short: the official diffpy-cmi instructions lead me to a series of errors where necessary packages cannot be found in the conda environment I have set up. The packages with the problems are openblas, ipyparallel, and libtiff. I have solved the openblas and ipyparallel issues, but libtiff remains difficult.

If anyone has experience resolving the issues, please let me know! I have provided a detailed description of the issue below.

Many thanks,

Ian

In detail:

I followed the diffpy-cmi installation instructions on diffpy.org. Once I have diffpy-cmi installed in a conda environment running python 3.7, I have tried several different tutorials, such as the calcpdfc60 example from cmi_exchange and the notebook 02 from the 2019 tutorial.
I run into a series of errors. The first is that the openblas package seems to not be installed properly. I get this error:

(diffpy-cmi) ianbillinge@Ians-MacBook-Pro-10 calcpdfc60 % python c60.py
Traceback (most recent call last):
  File "c60.py", line 5, in <module>
    from diffpy.srreal.pdfcalculator import DebyePDFCalculator
  File "/Users/ianbillinge/miniconda3/envs/diffpy-cmi/lib/python3.7/site-packages/diffpy/srreal/pdfcalculator.py", line 29, in <module>
    from diffpy.srreal.srreal_ext import DebyePDFCalculator
ImportError: dlopen(/Users/ianbillinge/miniconda3/envs/diffpy-cmi/lib/python3.7/site-packages/diffpy/srreal/srreal_ext.cpython-37m-darwin.so, 0x0002): Library not loaded: @rpath/libopenblasp-r0.3.7.dylib
  Referenced from: <1B31154A-78A1-3A93-89A0-AFFB34BD8A67> /Users/ianbillinge/miniconda3/envs/diffpy-cmi/lib/libdiffpy.dylib

Fortunately, I can resolve the error by entering
conda install openblas=0.3.7
into terminal. Interestingly, entering
conda install openblas 
does not resolve this issue.

I run into a similar issue with the package ipyparallel, which is easily resolved by running
conda install ipyparallel

I then run into a similar issue with the libtiff package:
(diffpy-cmi) ianbillinge@Ians-MacBook-Pro-10 calcpdfc60 % python c60.py              
Traceback (most recent call last):
  File "c60.py", line 6, in <module>
    from matplotlib.pyplot import plot, show
  File "/Users/ianbillinge/miniconda3/envs/diffpy-cmi/lib/python3.7/site-packages/matplotlib/__init__.py", line 109, in <module>
    from . import _api, _version, cbook, docstring, rcsetup
  File "/Users/ianbillinge/miniconda3/envs/diffpy-cmi/lib/python3.7/site-packages/matplotlib/rcsetup.py", line 27, in <module>
    from matplotlib.colors import Colormap, is_color_like
  File "/Users/ianbillinge/miniconda3/envs/diffpy-cmi/lib/python3.7/site-packages/matplotlib/colors.py", line 51, in <module>
    from PIL import Image
  File "/Users/ianbillinge/miniconda3/envs/diffpy-cmi/lib/python3.7/site-packages/PIL/Image.py", line 103, in <module>
    from . import _imaging as core
ImportError: dlopen(/Users/ianbillinge/miniconda3/envs/diffpy-cmi/lib/python3.7/site-packages/PIL/_imaging.cpython-37m-darwin.so, 0x0002): Library not loaded: @rpath/libtiff.5.dylib
  Referenced from: <D41B0480-E719-39FB-BE0F-9BC1E65254C3> /Users/ianbillinge/miniconda3/envs/diffpy-cmi/lib/python3.7/site-packages/PIL/_imaging.cpython-37m-darwin.so

I have not been able to resolve this one.

Here is the information about my system:
operating system: MacOS 13.4.1 (c)
conda version: conda 23.1.0
packages in the environment:
# Name                    Version                   Build  Channel
anyio                     3.7.1              pyhd8ed1ab_0    conda-forge
appnope                   0.1.3              pyhd8ed1ab_0    conda-forge
argon2-cffi               21.3.0             pyhd8ed1ab_0    conda-forge
argon2-cffi-bindings      21.2.0           py37h69ee0a8_2    conda-forge
attrs                     23.1.0             pyh71513ae_1    conda-forge
backcall                  0.2.0              pyh9f0ad1d_0    conda-forge
backports                 1.1                pyhd3eb1b0_0  
backports.functools_lru_cache 1.6.5              pyhd8ed1ab_0    conda-forge
beautifulsoup4            4.12.2             pyha770c72_0    conda-forge
bleach                    6.0.0              pyhd8ed1ab_0    conda-forge
boost                     1.67.0                   py37_4  
brotli                    1.0.9                hb7f2c08_9    conda-forge
brotli-bin                1.0.9                hb7f2c08_9    conda-forge
bzip2                     1.0.8                h0d85af4_4    conda-forge
ca-certificates           2023.7.22            h8857fd0_0    conda-forge
certifi                   2023.7.22          pyhd8ed1ab_0    conda-forge
cffi                      1.15.1           py37h7346b73_1    conda-forge
cycler                    0.11.0             pyhd8ed1ab_0    conda-forge
dbus                      1.13.18              h18a8e69_0  
debugpy                   1.6.3            py37hf6dfe07_0    conda-forge
decorator                 5.1.1              pyhd8ed1ab_0    conda-forge
defusedxml                0.7.1              pyhd8ed1ab_0    conda-forge
diffpy-cmi                3.0.1                    py37_0    diffpy
diffpy-srfit              3.0.0                    pypi_0    pypi
diffpy-structure          3.0.1                    pypi_0    pypi
diffpy-utils              3.0.0                    pypi_0    pypi
diffpy.srfit              3.0.0                    py37_0    diffpy
diffpy.srreal             1.3.0            py37h4867ba1_0    diffpy
diffpy.structure          3.0.1                      py_0    diffpy
diffpy.utils              3.0.0                      py_0    diffpy
entrypoints               0.4                pyhd8ed1ab_0    conda-forge
exceptiongroup            1.1.2              pyhd8ed1ab_0    conda-forge
expat                     2.5.0                hf0c8a7f_1    conda-forge
flit-core                 3.9.0              pyhd8ed1ab_0    conda-forge
fonttools                 4.38.0           py37h8052db5_0    conda-forge
freetype                  2.12.1               h3f81eb7_1    conda-forge
gettext                   0.21.1               h8a4c099_0    conda-forge
giflib                    5.2.1                hb7f2c08_3    conda-forge
glib                      2.76.4               h7d26f99_0    conda-forge
glib-tools                2.76.4               h7d26f99_0    conda-forge
gsl                       2.6                  h71c5fe9_2    conda-forge
icu                       58.2              h0a44026_1000    conda-forge
idna                      3.4                pyhd8ed1ab_0    conda-forge
importlib-metadata        4.11.4           py37hf985489_0    conda-forge
importlib_resources       6.0.0              pyhd8ed1ab_0    conda-forge
ipykernel                 6.16.2             pyh736e0ef_0    conda-forge
ipython                   7.33.0           py37hf985489_0    conda-forge
ipython_genutils          0.2.0                      py_1    conda-forge
ipywidgets                8.0.7              pyhd8ed1ab_0    conda-forge
jedi                      0.18.2             pyhd8ed1ab_0    conda-forge
jinja2                    3.1.2              pyhd8ed1ab_1    conda-forge
jpeg                      9e                   hb7f2c08_3    conda-forge
jsonschema                4.17.3             pyhd8ed1ab_0    conda-forge
jupyter                   1.0.0            py37hf985489_7    conda-forge
jupyter_client            7.4.9              pyhd8ed1ab_0    conda-forge
jupyter_console           6.5.1              pyhd8ed1ab_0    conda-forge
jupyter_core              4.11.2           py37hecd8cb5_0  
jupyter_server            1.23.4             pyhd8ed1ab_0    conda-forge
jupyterlab_pygments       0.2.2              pyhd8ed1ab_0    conda-forge
jupyterlab_widgets        3.0.8              pyhd8ed1ab_0    conda-forge
kiwisolver                1.4.4            py37h229a17a_0    conda-forge
lcms2                     2.15                 h29502cd_0    conda-forge
lerc                      4.0.0                hb486fe8_0    conda-forge
libblas                   3.8.0               14_openblas    conda-forge
libboost                  1.67.0               hebc422b_4  
libbrotlicommon           1.0.9                hb7f2c08_9    conda-forge
libbrotlidec              1.0.9                hb7f2c08_9    conda-forge
libbrotlienc              1.0.9                hb7f2c08_9    conda-forge
libcblas                  3.8.0               14_openblas    conda-forge
libcxx                    16.0.6               hd57cbcb_0    conda-forge
libdeflate                1.17                 hac1461d_0    conda-forge
libdiffpy                 1.4.0                h855b5bd_2    conda-forge
libexpat                  2.5.0                hf0c8a7f_1    conda-forge
libffi                    3.4.4                hecd8cb5_0  
libgfortran               4.0.0           7_5_0_h1a10cd1_23    conda-forge
libgfortran4              7.5.0               h1a10cd1_23    conda-forge
libglib                   2.76.4               hc62aa5d_0    conda-forge
libiconv                  1.17                 hac89ed1_0    conda-forge
liblapack                 3.8.0               14_openblas    conda-forge
libobjcryst               2017.2.2             hd1581dd_0    diffpy
libopenblas               0.3.7                h3d69b6c_7    conda-forge
libpng                    1.6.39               ha978bb4_0    conda-forge
libsodium                 1.0.18               hbcb3906_1    conda-forge
libsqlite                 3.42.0               h58db7d2_0    conda-forge
libtiff                   4.5.0                hee9004a_2    conda-forge
libwebp                   1.2.4                h70a068d_1    conda-forge
libwebp-base              1.2.4                h775f41a_0    conda-forge
libzlib                   1.2.13               h8a1eda9_5    conda-forge
llvm-openmp               16.0.6               hff08bdf_0    conda-forge
lz4-c                     1.9.4                hf0c8a7f_0    conda-forge
markupsafe                2.1.1            py37h69ee0a8_1    conda-forge
matplotlib                3.5.3            py37hf985489_2    conda-forge
matplotlib-base           3.5.3            py37h3748cd6_2    conda-forge
matplotlib-inline         0.1.6              pyhd8ed1ab_0    conda-forge
mistune                   3.0.0              pyhd8ed1ab_0    conda-forge
munkres                   1.1.4              pyh9f0ad1d_0    conda-forge
nbclassic                 1.0.0              pyhb4ecaf3_1    conda-forge
nbclient                  0.7.0              pyhd8ed1ab_0    conda-forge
nbconvert                 7.6.0              pyhd8ed1ab_0    conda-forge
nbconvert-core            7.6.0              pyhd8ed1ab_0    conda-forge
nbconvert-pandoc          7.6.0              pyhd8ed1ab_0    conda-forge
nbformat                  5.8.0              pyhd8ed1ab_0    conda-forge
ncurses                   6.4                  hf0c8a7f_0    conda-forge
nest-asyncio              1.5.6              pyhd8ed1ab_0    conda-forge
notebook                  6.5.4              pyha770c72_0    conda-forge
notebook-shim             0.2.3              pyhd8ed1ab_0    conda-forge
numpy                     1.21.6           py37h345d48f_0    conda-forge
openblas                  0.3.7                h2f2564b_7    conda-forge
openssl                   1.1.1u               h8a1eda9_0    conda-forge
packaging                 23.1               pyhd8ed1ab_0    conda-forge
pandoc                    3.1.3                h9d075a6_0    conda-forge
pandocfilters             1.5.0              pyhd8ed1ab_0    conda-forge
parso                     0.8.3              pyhd8ed1ab_0    conda-forge
pcre2                     10.40                h1c4e4bc_0    conda-forge
periodictable             1.5.0                    py37_0    diffpy
pexpect                   4.8.0              pyh1a96a4e_2    conda-forge
pickleshare               0.7.5                   py_1003    conda-forge
pillow                    9.4.0            py37hcec6c5f_0  
pip                       23.2.1             pyhd8ed1ab_0    conda-forge
pkgutil-resolve-name      1.3.10             pyhd8ed1ab_0    conda-forge
prometheus_client         0.17.1             pyhd8ed1ab_0    conda-forge
prompt-toolkit            3.0.39             pyha770c72_0    conda-forge
prompt_toolkit            3.0.39               hd8ed1ab_0    conda-forge
psutil                    5.9.3            py37h8052db5_0    conda-forge
ptyprocess                0.7.0              pyhd3deb0d_0    conda-forge
py-boost                  1.67.0           py37h6440ff4_4  
pycifrw                   4.4.3            py37h994c40b_1    conda-forge
pycparser                 2.21               pyhd8ed1ab_0    conda-forge
pygments                  2.15.1             pyhd8ed1ab_0    conda-forge
pyobjcryst                2.1.0            py37hc1f77ba_0    diffpy
pyparsing                 3.1.0              pyhd8ed1ab_0    conda-forge
pyqt                      5.9.2            py37h2a560b1_4    conda-forge
pyrsistent                0.18.1           py37h69ee0a8_1    conda-forge
python                    3.7.16               h218abb5_0  
python-dateutil           2.8.2              pyhd8ed1ab_0    conda-forge
python-fastjsonschema     2.18.0             pyhd8ed1ab_0    conda-forge
python_abi                3.7                     2_cp37m    conda-forge
pyzmq                     24.0.1           py37haa7bc41_0    conda-forge
qt                        5.9.7                h93ee506_2    conda-forge
qtconsole                 5.4.3              pyhd8ed1ab_0    conda-forge
qtconsole-base            5.4.3              pyha770c72_0    conda-forge
qtpy                      2.3.1              pyhd8ed1ab_0    conda-forge
readline                  8.2                  h9e318b2_1    conda-forge
scipy                     1.5.3            py37h04d6967_0    conda-forge
send2trash                1.8.0              pyhd8ed1ab_0    conda-forge
setuptools                68.0.0             pyhd8ed1ab_0    conda-forge
sip                       4.19.8          py37h0a44026_1000    conda-forge
six                       1.16.0             pyh6c4a22f_0    conda-forge
sniffio                   1.3.0              pyhd8ed1ab_0    conda-forge
soupsieve                 2.3.2.post1        pyhd8ed1ab_0    conda-forge
sqlite                    3.42.0               h2b0dec6_0    conda-forge
terminado                 0.17.1             pyhd1c38e8_0    conda-forge
tinycss2                  1.2.1              pyhd8ed1ab_0    conda-forge
tk                        8.6.12               h5dbffcc_0    conda-forge
tornado                   6.2              py37h994c40b_0    conda-forge
traitlets                 5.9.0              pyhd8ed1ab_0    conda-forge
typing-extensions         4.7.1                hd8ed1ab_0    conda-forge
typing_extensions         4.7.1              pyha770c72_0    conda-forge
unicodedata2              15.0.0           py37h6c40b1e_0  
wcwidth                   0.2.6              pyhd8ed1ab_0    conda-forge
webencodings              0.5.1                      py_1    conda-forge
websocket-client          1.6.1              pyhd8ed1ab_0    conda-forge
wheel                     0.41.0             pyhd8ed1ab_0    conda-forge
widgetsnbextension        4.0.8              pyhd8ed1ab_0    conda-forge
xz                        5.4.2                h6c40b1e_0  
zeromq                    4.3.4                he49afe7_1    conda-forge
zipp                      3.15.0             pyhd8ed1ab_0    conda-forge
zlib                      1.2.13               h8a1eda9_5    conda-forge
zstd                      1.5.5                hc035e20_0


--
Ian Billinge
he/him/his
Ph.D Student, Yip Lab
Dept. of Earth & Environmental Engineering
Fu Foundation School of Engineering
Columbia University in the City of New York

Dimitry Grebenyuk

unread,
Aug 2, 2023, 11:01:16 PM8/2/23
to diffpy-users
Hi Ian!

If you are using an Apple Silicon powered Mac, the issue may arise from a possible architecture incompatibility of some dependency package you have installed (e.g. numpy or something else), even though the error message does not say so. Switching between the native terminal and Rosetta-assisted terminal emulating x86 architecture (in either direction) may help with getting the correct version of all the dependencies which may help to solve the issue with the package in question. It's just a guess, but I have encountered this kind of issue several times on my M1 Mac, so it is at least worth trying.


Best, 
Dimitry

Ian Billinge

unread,
Aug 25, 2023, 1:31:21 PM8/25/23
to diffpy...@googlegroups.com
Hello everyone,

I seem to have solved the issue, so I wanted to send the fix so that future users may benefit.

It turns out the issue was with the package pillow, not libtiff.

I ran

pip uninstall pillow

and then

pip install pillow==9.4.0

which resolved the issue.
Reply all
Reply to author
Forward
0 new messages