Installation Issues Linking to Jupyter Lab

Hello,

I am seeking advice on the installation for FEnICSx using conda and linking the environment to jupyter lab. Before this process I updated conda to the latest version. The steps I took for the installation and link for the kernel are as follows:

  1. conda create -n fenics -c conda-forge python=3.8 jupyter fenics-dolfinx mpich pyvista
  2. conda activate fenics
  3. python -m ipykernel install --user --name fenics --display-name “Python fenics”
  4. jupyter lab

Once I open jupyter lab and begin a new notebook I tried the command:
from dolfinx import *

I also tried these two commands:
from mpi4py import MPI
from dolfinx import mesh

When I run these commands the kernel restarts as in the picture below.


I have tried to link jupyter lab and the fenics conda environment many times now using multiple methods and am unsure where to go from here to successfully use jupyter lab. Any advice or help is much appreciated!

Thank you!

Hello,

I wanted to follow-up with my question that I have the Macbook Pro with the M3 chip. I re-created a conda environment using this line:

conda create --override-channels -c conda-forge/osx-64 -c conda-forge/noarch -n fenicsx2 python=3.10 fenics-dolfinx mpich pyvista jupyterlab matplotlib pandas numpy

The jupyter lab link works successfully now, but the dolfinx package does not import. When I try to import dolfinx the kernel restarts. The other packages (basix, ffxc, ufl) are importing alright.

Thank you!

Maybe @minrk can comment, as he is the expert on conda, and has a Mac :slight_smile:

I’ll have a look tomorrow, but sharing the output of conda env export helps debug.

I’m pretty sure you can’t run osx-64 dolfinx on arm macs because rosetta doesn’t emulate avx, so you’ll get illegal instruction errors. You need to use the native osx-arm64 builds on an arm mac.

1 Like

Hello,

Thank you for the reply and I’ve placed the output of conda env export below:

name: base
channels:

  • anaconda
  • conda-forge
  • defaults
    dependencies:
  • _ipyw_jlab_nb_ext_conf=0.1.0=py38_0
  • alabaster=0.7.12=py_0
  • anaconda=2020.11=py38_0
  • anaconda-client=1.7.2=py38_0
  • anaconda-navigator=1.10.0=py38_0
  • anaconda-project=0.8.4=py_0
  • applaunchservices=0.2.1=py_0
  • appnope=0.1.0=py38_1001
  • appscript=1.1.1=py38haf1e3a3_0
  • argh=0.26.2=py38_0
  • argon2-cffi=20.1.0=py38haf1e3a3_1
  • asn1crypto=1.4.0=py_0
  • astroid=2.4.2=py38_0
  • astropy=4.0.2=py38haf1e3a3_0
  • async_generator=1.10=py_0
  • atomicwrites=1.4.0=py_0
  • attrs=20.3.0=pyhd3eb1b0_0
  • autopep8=1.5.4=py_0
  • babel=2.8.1=pyhd3eb1b0_0
  • backcall=0.2.0=py_0
  • backports=1.0=py_2
  • backports.functools_lru_cache=2.0.0=pyhd8ed1ab_0
  • backports.shutil_get_terminal_size=1.0.0=py38_2
  • backports.tempfile=1.0=py_0
  • backports.weakref=1.0.post1=pyhd8ed1ab_1003
  • beautifulsoup4=4.9.3=pyhb0f4dca_0
  • bitarray=1.6.1=py38h9ed2024_0
  • bkcharts=0.2=py38_0
  • blas=1.0=mkl
  • bleach=3.2.1=py_0
  • blosc=1.20.1=hab81aa3_0
  • bokeh=2.2.3=py38_0
  • boto=2.49.0=py38_0
  • bottleneck=1.3.2=py38hf1fa96c_1
  • brotlipy=0.7.0=py38haf1e3a3_1000
  • bzip2=1.0.8=h1de35cc_0
  • ca-certificates=2020.10.14=0
  • certifi=2020.6.20=pyhd3eb1b0_3
  • cffi=1.14.3=py38hed5b41f_0
  • chardet=3.0.4=py38_1003
  • click=7.1.2=py_0
  • cloudpickle=1.6.0=py_0
  • clyent=1.2.2=py38_1
  • colorama=0.4.4=py_0
  • conda=4.14.0=py38h50d1736_0
  • conda-build=3.20.5=py38_1
  • conda-env=2.6.0=1
  • conda-package-handling=1.9.0=py38hef030d1_1
  • conda-verify=3.4.2=py_1
  • contextlib2=0.6.0.post1=py_0
  • cryptography=3.1.1=py38hddc9c9b_0
  • curl=7.71.1=hb0a8c7a_1
  • cycler=0.10.0=py38_0
  • cython=0.29.21=py38hb1e8313_0
  • cytoolz=0.11.0=py38haf1e3a3_0
  • dask=2.30.0=py_0
  • dask-core=2.30.0=py_0
  • dbus=1.13.18=h18a8e69_0
  • decorator=4.4.2=py_0
  • defusedxml=0.6.0=py_0
  • diff-match-patch=20200713=py_0
  • distributed=2.30.1=py38hecd8cb5_0
  • docutils=0.16=py38_1
  • entrypoints=0.3=py38_0
  • et_xmlfile=1.0.1=py_1001
  • expat=2.2.10=hb1e8313_2
  • fastcache=1.1.0=py38h1de35cc_0
  • filelock=3.0.12=py_0
  • flake8=3.8.4=py_0
  • flask=1.1.2=py_0
  • freetype=2.10.4=ha233b18_0
  • fsspec=0.8.3=py_0
  • future=0.18.2=py38_1
  • get_terminal_size=1.0.0=h7520d66_0
  • gettext=0.19.8.1=hb0f4f8b_2
  • gevent=20.9.0=py38haf1e3a3_0
  • glib=2.66.1=h9bbe63b_0
  • glob2=0.7=py_0
  • gmp=6.1.2=hb37e062_1
  • gmpy2=2.0.8=py38h6ef4df4_3
  • greenlet=0.4.17=py38haf1e3a3_0
  • h5py=2.10.0=py38h3134771_0
  • hdf5=1.10.4=hfa1e0ec_0
  • heapdict=1.0.1=py_0
  • html5lib=1.1=py_0
  • icu=58.2=h0a44026_3
  • idna=2.10=py_0
  • imageio=2.9.0=py_0
  • imagesize=1.2.0=py_0
  • importlib-metadata=2.0.0=py_1
  • importlib_metadata=2.0.0=1
  • iniconfig=1.1.1=py_0
  • intel-openmp=2019.4=233
  • intervaltree=3.1.0=py_0
  • ipykernel=5.3.4=py38h5ca1d4c_0
  • ipython=7.19.0=py38h01d92e1_0
  • ipython_genutils=0.2.0=py38_0
  • ipywidgets=7.5.1=py_1
  • isort=5.6.4=py_0
  • itsdangerous=1.1.0=py_0
  • jbig=2.1=h4d881f8_0
  • jdcal=1.4.1=py_0
  • jedi=0.17.1=py38_0
  • jinja2=2.11.2=py_0
  • joblib=0.17.0=py_0
  • jpeg=9b=he5867d9_2
  • json5=0.9.5=py_0
  • jsonschema=3.2.0=py_2
  • jupyter=1.0.0=py38_7
  • jupyter_client=6.1.7=py_0
  • jupyter_console=6.2.0=py_0
  • jupyter_core=4.6.3=py38_0
  • jupyterlab=2.2.6=py_0
  • jupyterlab_pygments=0.1.2=py_0
  • jupyterlab_server=1.2.0=py_0
  • keyring=21.4.0=py38_1
  • kiwisolver=1.3.0=py38h23ab428_0
  • krb5=1.18.2=h75d18d8_0
  • lazy-object-proxy=1.4.3=py38h1de35cc_0
  • lcms2=2.11=h92f6f08_0
  • libarchive=3.4.2=haa3ed63_0
  • libcurl=7.71.1=h8a08a2b_1
  • libcxx=10.0.0=1
  • libedit=3.1.20191231=h1de35cc_1
  • libffi=3.3=hb1e8313_2
  • libgfortran=3.0.1=h93005f0_2
  • libiconv=1.16=h1de35cc_0
  • liblief=0.10.1=h0a44026_0
  • libllvm10=10.0.1=h76017ad_5
  • libpng=1.6.37=ha441bb4_0
  • libsodium=1.0.18=h1de35cc_0
  • libspatialindex=1.9.3=h0a44026_0
  • libssh2=1.9.0=ha12b0ac_1
  • libtiff=4.1.0=hcb84e12_1
  • libxml2=2.9.10=h7cdb67c_3
  • libxslt=1.1.34=h83b36ba_0
  • llvm-openmp=10.0.0=h28b9765_0
  • llvmlite=0.34.0=py38h739e7dc_4
  • locket=0.2.0=py38_1
  • lxml=4.6.1=py38h63b7cb6_0
  • lz4-c=1.9.2=h79c402e_3
  • lzo=2.10=haf1e3a3_2
  • markupsafe=1.1.1=py38h1de35cc_1
  • matplotlib=3.3.2=0
  • matplotlib-base=3.3.2=py38h181983e_0
  • mccabe=0.6.1=py38_1
  • mistune=0.8.4=py38h1de35cc_1001
  • mkl=2019.4=233
  • mkl-service=2.3.0=py38hfbe908c_0
  • mkl_fft=1.2.0=py38hc64f4ea_0
  • mkl_random=1.1.1=py38h959d312_0
  • mock=4.0.2=py_0
  • more-itertools=8.6.0=pyhd3eb1b0_0
  • mpc=1.1.0=h6ef4df4_1
  • mpfr=4.0.2=h9066e36_1
  • mpmath=1.1.0=py38_0
  • msgpack-python=1.0.0=py38h04f5b5a_1
  • multipledispatch=0.6.0=py38_0
  • navigator-updater=0.2.1=py38_0
  • nbclient=0.5.1=py_0
  • nbconvert=6.0.7=py38_0
  • nbformat=5.0.8=py_0
  • ncurses=6.2=h0a44026_1
  • nest-asyncio=1.4.2=pyhd3eb1b0_0
  • networkx=2.5=py_0
  • nltk=3.5=py_0
  • nose=1.3.7=py38_1004
  • notebook=6.1.4=py38_0
  • numba=0.51.2=py38h6440ff4_1
  • numexpr=2.7.1=py38hce01a72_0
  • numpy=1.19.2=py38h456fd55_0
  • numpy-base=1.19.2=py38hcfb5961_0
  • numpydoc=1.1.0=pyhd3eb1b0_1
  • olefile=0.46=py_0
  • openpyxl=3.0.5=py_0
  • openssl=1.1.1h=haf1e3a3_0
  • packaging=20.4=py_0
  • pandas=1.1.3=py38hb1e8313_0
  • pandoc=2.11=h0dc7051_0
  • pandocfilters=1.4.3=py38hecd8cb5_1
  • parso=0.7.0=py_0
  • partd=1.1.0=py_0
  • path=15.0.0=py38_0
  • path.py=12.5.0=0
  • pathlib2=2.3.5=py38_1
  • pathtools=0.1.2=py_1
  • patsy=0.5.1=py38_0
  • pcre=8.44=hb1e8313_0
  • pep8=1.7.1=py38_0
  • pexpect=4.8.0=py38_1
  • pickleshare=0.7.5=py38_1001
  • pillow=8.0.1=py38h5270095_0
  • pip=20.2.4=py38hecd8cb5_0
  • pkginfo=1.6.1=py38hecd8cb5_0
  • pluggy=0.13.1=py38_0
  • ply=3.11=py38_0
  • prometheus_client=0.8.0=py_0
  • prompt-toolkit=3.0.8=py_0
  • prompt_toolkit=3.0.8=0
  • psutil=5.7.2=py38haf1e3a3_0
  • ptyprocess=0.6.0=py38_0
  • py=1.9.0=py_0
  • py-lief=0.10.1=py38haf313ee_0
  • pycodestyle=2.6.0=py_0
  • pycosat=0.6.3=py38h1de35cc_1
  • pycparser=2.20=py_2
  • pycurl=7.43.0.6=py38hddc9c9b_0
  • pydocstyle=5.1.1=py_0
  • pyflakes=2.2.0=py_0
  • pygments=2.7.2=pyhd3eb1b0_0
  • pylint=2.6.0=py38_0
  • pyodbc=4.0.30=py38h0a44026_0
  • pyopenssl=19.1.0=py_1
  • pyparsing=2.4.7=py_0
  • pyqt=5.9.2=py38h655552a_2
  • pyrsistent=0.17.3=py38haf1e3a3_0
  • pysocks=1.7.1=py38_1
  • pytables=3.6.1=py38h4727e94_0
  • pytest=6.1.1=py38_0
  • python=3.8.5=h26836e1_1
  • python-dateutil=2.8.1=py_0
  • python-jsonrpc-server=0.4.0=py_0
  • python-language-server=0.35.1=py_0
  • python-libarchive-c=2.9=py_0
  • python.app=2=py38_10
  • python_abi=3.8=2_cp38
  • pytz=2020.1=py_0
  • pywavelets=1.1.1=py38haf1e3a3_2
  • pyyaml=5.3.1=py38haf1e3a3_1
  • pyzmq=19.0.2=py38hb1e8313_1
  • qdarkstyle=2.8.1=py_0
  • qt=5.9.7=h468cd18_1
  • qtawesome=1.0.1=py_0
  • qtconsole=4.7.7=py_0
  • qtpy=1.9.0=py_0
  • readline=8.0=h1de35cc_0
  • regex=2020.10.15=py38haf1e3a3_0
  • requests=2.24.0=py_0
  • ripgrep=12.1.1=0
  • rope=0.18.0=py_0
  • rtree=0.9.4=py38_1
  • ruamel_yaml=0.15.87=py38haf1e3a3_1
  • scikit-image=0.17.2=py38h81aa140_0
  • scikit-learn=0.23.2=py38h959d312_0
  • scipy=1.5.2=py38h2515648_0
  • seaborn=0.11.0=py_0
  • send2trash=1.5.0=py38_0
  • setuptools=50.3.1=py38hecd8cb5_1
  • simplegeneric=0.8.1=py38_2
  • singledispatch=3.4.0.3=py_1001
  • sip=4.19.8=py38h0a44026_0
  • six=1.15.0=py38hecd8cb5_0
  • snowballstemmer=2.0.0=py_0
  • sortedcollections=1.2.1=py_0
  • sortedcontainers=2.2.2=py_0
  • soupsieve=2.0.1=py_0
  • sphinx=3.2.1=py_0
  • sphinxcontrib=1.0=py38_1
  • sphinxcontrib-applehelp=1.0.2=py_0
  • sphinxcontrib-devhelp=1.0.2=py_0
  • sphinxcontrib-htmlhelp=1.0.3=py_0
  • sphinxcontrib-jsmath=1.0.1=py_0
  • sphinxcontrib-qthelp=1.0.3=py_0
  • sphinxcontrib-serializinghtml=1.1.4=py_0
  • sphinxcontrib-websupport=1.2.4=py_0
  • spyder=4.1.5=py38_0
  • spyder-kernels=1.9.4=py38_0
  • sqlalchemy=1.3.20=py38h9ed2024_0
  • sqlite=3.33.0=hffcf06c_0
  • statsmodels=0.12.0=py38haf1e3a3_0
  • sympy=1.6.2=py38hecd8cb5_1
  • tblib=1.7.0=py_0
  • terminado=0.9.1=py38_0
  • testpath=0.4.4=py_0
  • threadpoolctl=2.1.0=pyh5ca1d4c_0
  • tifffile=2020.10.1=py38h0cf3a3e_2
  • tk=8.6.10=hb0a8c7a_0
  • toml=0.10.1=py_0
  • toolz=0.11.1=py_0
  • tornado=6.0.4=py38h1de35cc_1
  • tqdm=4.50.2=py_0
  • traitlets=5.0.5=py_0
  • typing_extensions=3.7.4.3=py_0
  • ujson=4.0.1=py38hb1e8313_0
  • unicodecsv=0.14.1=py38_0
  • unixodbc=2.3.9=haf1e3a3_0
  • urllib3=1.25.11=py_0
  • watchdog=0.10.3=py38haf1e3a3_0
  • wcwidth=0.2.5=py_0
  • webencodings=0.5.1=py38_1
  • werkzeug=1.0.1=py_0
  • wheel=0.35.1=py_0
  • widgetsnbextension=3.5.1=py38_0
  • wrapt=1.11.2=py38h1de35cc_0
  • wurlitzer=2.0.1=py38_0
  • xlrd=1.2.0=py_0
  • xlsxwriter=1.3.7=py_0
  • xlwings=0.20.8=py38_0
  • xlwt=1.3.0=py38_0
  • xmltodict=0.13.0=pyhd8ed1ab_0
  • xz=5.2.5=h1de35cc_0
  • yaml=0.2.5=haf1e3a3_0
  • yapf=0.30.0=py_0
  • zeromq=4.3.3=hb1e8313_3
  • zict=2.0.0=py_0
  • zipp=3.4.0=pyhd3eb1b0_0
  • zlib=1.2.11=h1de35cc_3
  • zope=1.0=py38_1
  • zope.event=4.5.0=py38_0
  • zope.interface=5.1.2=py38haf1e3a3_0
  • zstd=1.4.5=h41d2c2f_0
  • pip:
    • h5json==1.1.3
    • lib6003==0.0.4
    • pyaudio==0.2.11
    • pyfehm==1.0.4
      prefix: /Users//anaconda3

I am not familiar with the difference between installing conda modules using a native osx-arm64 build and the rosetta. Perhaps you may elaborate on this so I can learn for current and future fenics builds.

Thank you and I appreciate you taking a look at the issue tomorrow!