# Installation Issues Linking to Jupyter Lab

**URL:** <https://fenicsproject.discourse.group/t/installation-issues-linking-to-jupyter-lab/13591>\
**Category:** installation\
**Created:** [February 12, 2024, 2:09pm UTC](https://fenicsproject.discourse.group/t/installation-issues-linking-to-jupyter-lab/13591 "2024-02-12T14:09:44Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![ml7903](https://avatars.discourse-cdn.com/v4/letter/m/d9b06d/32.png) [@ml7903](https://fenicsproject.discourse.group/u/ml7903)\
**Post date:** [February 12, 2024, 2:09pm UTC](https://fenicsproject.discourse.group/t/installation-issues-linking-to-jupyter-lab/13591/1 "2024-02-12T14:09:44Z")

</div>

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.

 ![Screenshot 2024-02-12 at 9.07.13 AM](https://global.discourse-cdn.com/free1/uploads/fenicsproject1/original/2X/9/9bd9303fc79a89bfa1cc9acc78c3d4c9bcd2bbdb.png)  
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!

---

<div class="post-metadata">

**Author:** ![ml7903](https://avatars.discourse-cdn.com/v4/letter/m/d9b06d/32.png) [@ml7903](https://fenicsproject.discourse.group/u/ml7903)\
**Post date:** [February 13, 2024, 7:50pm UTC](https://fenicsproject.discourse.group/t/installation-issues-linking-to-jupyter-lab/13591/2 "2024-02-13T19:50:30Z")

</div>

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!

---

<div class="post-metadata">

**Author:** ![dokken](https://yyz2.discourse-cdn.com/free1/user_avatar/fenicsproject.discourse.group/dokken/32/1560_2.png) [@dokken](https://fenicsproject.discourse.group/u/dokken)\
**Post date:** [February 13, 2024, 8:40pm UTC](https://fenicsproject.discourse.group/t/installation-issues-linking-to-jupyter-lab/13591/3 "2024-02-13T20:40:22Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![minrk](https://yyz2.discourse-cdn.com/free1/user_avatar/fenicsproject.discourse.group/minrk/32/3866_2.png) [@minrk](https://fenicsproject.discourse.group/u/minrk)\
**Post date:** [February 13, 2024, 9:03pm UTC](https://fenicsproject.discourse.group/t/installation-issues-linking-to-jupyter-lab/13591/4 "2024-02-13T21:03:39Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![ml7903](https://avatars.discourse-cdn.com/v4/letter/m/d9b06d/32.png) [@ml7903](https://fenicsproject.discourse.group/u/ml7903)\
**Post date:** [February 14, 2024, 12:08am UTC](https://fenicsproject.discourse.group/t/installation-issues-linking-to-jupyter-lab/13591/5 "2024-02-14T00:08:00Z")

</div>

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!

---

<div class="post-metadata">

**Author:** ![minrk](https://yyz2.discourse-cdn.com/free1/user_avatar/fenicsproject.discourse.group/minrk/32/3866_2.png) [@minrk](https://fenicsproject.discourse.group/u/minrk)\
**Post date:** [March 13, 2024, 8:19am UTC](https://fenicsproject.discourse.group/t/installation-issues-linking-to-jupyter-lab/13591/6 "2024-03-13T08:19:40Z")

</div>

Sorry, ‘tomorrow’ got away from me.

```auto
conda info

```

will tell you about your conda installation. In particular, the `platform` field is relevant here, which tells you the os and architecture your packages are compiled for. If you are on an ARM mac, the platform should probably be `osx-arm64`, but I’m pretty sure yours is `osx-64`, which means your packages are compiled for an Intel mac. If that’s the case, you should probably get the macOS arm64 installer [here](https://github.com/conda-forge/miniforge?tab=readme-ov-file#miniforge3) and start fresh.

ARM macs _can_ (mostly) emulate x86\_64. That’s why your `osx-64` installation mostly works. However, they don’t emulate the full extended instruction set, and one or more fenics dependencies use AVX on Intel chips, which fails under emulation on ARM (aside: I think this changed somewhat recently, I haven’t had a chance to track it down and determine if it _should_ be the case).

You can pick the different channels on a per-environment basis, but that’s tricky and prone to error if you install packages more than once. To create an osx-arm64 dolfinx env on an osx-64 conda installation:

```auto
conda create -n fenics --override-channels -c conda-forge/noarch -c conda-forge/osx-arm64 jupyterlab fenics-dolfinx mpich pyvista

```

This is _almost_ the install command you had, but trading `osx-64` for `osx-arm64`. If you install the arm64 miniforge, these will be the default channels, and you won’t need to specify any channels to get these in the future.

I hope that helps!
