How to install pyvista for use with a locally installed spack binary?

I have an installed spack locally:
spack find
– linux-ubuntu22.04-icelake / gcc@11.4.0 -----------------------
autoconf@2.72 gdbm@1.23 libxcrypt@4.4.35 pkgconf@1.9.5 py-pycparser@2.21
automake@1.16.5 gettext@0.22.4 libxml2@2.10.3 pmix@5.0.1 py-pyproject-metadata@0.7.1
berkeley-db@18.1.40 gmake@4.4.1 m4@1.4.19 pugixml@1.13 py-setuptools@68.0.0
bison@3.8.2 hdf5@1.14.3 metis@5.1.0 py-cffi@1.15.1 py-wheel@0.41.2
boost@1.84.0 hwloc@2.9.1 ncurses@6.4 py-cython@0.29.36 python@3.11.6
bzip2@1.0.8 hypre@2.30.0 nghttp2@1.57.0 py-fenics-basix@0.7.0 re2c@2.2
ca-certificates-mozilla@2023-05-30 krb5@1.20.1 ninja@1.11.1 py-fenics-dolfinx@0.7.2 readline@8.2
cmake@3.27.9 libbsd@0.11.7 numactl@2.0.14 py-fenics-ffcx@0.7.0 sqlite@3.43.2
curl@8.4.0 libedit@3.1-20210216 openblas@0.3.25 py-fenics-ufl@2023.2.0 superlu-dist@8.2.1
diffutils@3.9 libevent@2.1.12 openmpi@5.0.1 py-flit-core@3.9.0 tar@1.34
expat@2.5.0 libffi@3.4.4 openssh@9.5p1 py-mpi4py@3.1.5 util-linux-uuid@2.38.1
fenics-basix@0.7.0 libiconv@1.17 openssl@3.1.3 py-numpy@1.26.3 util-macros@1.19.3
fenics-dolfinx@0.7.2 libmd@1.0.4 parmetis@4.0.3 py-packaging@23.1 xz@5.4.1
fenics-ufcx@0.7.0 libpciaccess@0.17 perl@5.38.0 py-petsc4py@3.20.2 zlib-ng@2.1.5
findutils@4.9.0 libsigsegv@2.14 petsc@3.20.2 py-pip@23.1.2 zstd@1.5.5
gcc-runtime@11.4.0 libtool@2.4.7 pigz@2.7 py-pybind11@2.11.1

So most of the examples in demo folder do work for me except pyvista_demo.py. So first I tried to slack add pyvista. It seems no spack package pyvista. So I tried to sudo pip install pyvista which does install however the pyvista module is not found by the current slack environment.

Is there a way that is known to get the spack env fenicsx-env to find pyvista? So far I am gettin g “No Module pyvista”. So far I verified that pyvista did install to \usr\local\lib\python3.10\dist-packages.

Oh… There is a py-pyvista package for spack right now trying to add it to fenicsx-env leads to:

     prusso@yoga:~$ spack install
==> Error: concretization failed for the following reasons:

   1. No valid value for variant 'mpi' of package 'vtk'
   2. No valid value for variant 'mpi' of package 'seacas'. Couldn't concretize without changing the existing environment. If you are ok with changing it, try `spack concretize --force`. You could consider setting `concretizer:unify` to `when_possible` or `false` to allow multiple versions of some packages.

After trying spack install:

=> Error: py-pyvista-0.42.3-d7hdkobajkbs3o37gyhqatf7my2yhxg5: Package was not installed
==> Updating view at /home/prusso/spack/var/spack/environments/fenicsx-env/.spack-env/view

Instead of calling

what happens if you call

python3 -m pip install pyvista

in your spack environment?

1 Like

So far at this time:

prusso@SurfacePro8:~/dolfinx$ python3 -m pip install pyvista
/home/prusso/spack/var/spack/environments/fenicsx-env/.spack-env/view/bin/python3: No module named pip

I did try to add py-pip and spack install and run python3 -m pip install pyvista which does install pyvista however so far for wsl2:

:~/dolfinx$  cd /home/prusso/dolfinx ; /usr/bin/env /home/prusso/spack/var/spack/environments/fenicsx-env/.spack-env/view/bin/python /home/prusso/.vscode-server/extensions/ms-python.python-2023.22.1/pythonFiles/lib/python/debugpy/adapter/../../debugpy/launcher 53121 -- /home/prusso/dolfinx/python/demo/demo_pyvista.py 
Traceback (most recent call last):
  File "/home/prusso/dolfinx/python/demo/demo_pyvista.py", line 302, in <module>
    plot_scalar()
  File "/home/prusso/dolfinx/python/demo/demo_pyvista.py", line 76, in plot_scalar
    subplotter = pyvista.Plotter(shape=(1, 2))
                 ^^^^^^^^^^^^^^^
  File "/home/prusso/spack/var/spack/environments/fenicsx-env/.spack-env/view/lib/python3.11/site-packages/pyvista/__init__.py", line 89, in __getattr__
    import pyvista.plotting
  File "/home/prusso/spack/var/spack/environments/fenicsx-env/.spack-env/view/lib/python3.11/site-packages/pyvista/plotting/__init__.py", line 7, in <module>
    from . import _vtk
  File "/home/prusso/spack/var/spack/environments/fenicsx-env/.spack-env/view/lib/python3.11/site-packages/pyvista/plotting/_vtk.py", line 31, in <module>
    from vtkmodules.vtkInteractionWidgets import (
ImportError: libGL.so.1: cannot open shared object file: No such file or directory

See for instance ImportError: libGL.so.1: cannot open shared object file: No such file or directory · Issue #1270 · ultralytics/ultralytics · GitHub

OK. So far it seems quicker and more simple for me to build from source dolfinx,basix,ffcx (–branch v0.6.0, those prev packs) along with these:
sudo apt-get install libhdf5-openmpi-dev
sudo apt install libpugixml-dev
sudo apt install libboost-dev
sudo apt install libboost-timer-dev
sudo apt install libscotchparmetis-dev
sudo apt install python3-pkgconfig
sudo apt install petsc-dev

Is it easier to build all of those packages than installing
apt-get install -y libgl1-mesa-dev
?

1 Like

I got pyvista to work with spack. thx to remind me libmesa had stuff in the back of my mind but hadn’t put it totally together yet…