PyVista is supported on Python versions 3.5+. Previous versions of Python are no longer supported as outlined in this issue.
For the best experience, please considering using Anaconda as a virtual environment and package manager for Python and following the instructions to install PyVista with Anaconda.
PyVista is built on top of the Visualization Toolkit (VTK) and NumPy - as such, the following projects are required dependencies of PyVista:
vtk - PyVista directly inherits types from the VTK library.
numpy - NumPy arrays provide a core foundation for PyVista’s data array access.
imageio - This library is used for saving screenshots.
appdirs - Data management for our example datasets so users can download tutorials on the fly.
meshio - Input/Output for many mesh formats.
scooby - Debugging tools
To install this package with
conda install -c conda-forge pyvista
The following are a list of optional dependencies and their purpose:
Interactive notebook rendering
Interactive notebook rendering
Capturing PyVista output for docs
Perceptually uniform colormaps
Saving movie files
Status bars for monitoring filters
Source / Developers¶
Alternatively, you can install the latest version from GitHub by visiting PyVista, and downloading the source (cloning) by running:
git clone https://github.com/pyvista/pyvista.git cd pyvista python -m pip install -e .
The latest documentation for the
master branch of PyVista can be found at
You can test your installation by running an example:
from pyvista import examples examples.plot_wave()
See other examples:
from pyvista import examples # list all examples print(dir(examples))
Running on CI Services¶
Please head over to pyvista/gl-ci-hepers for details on setting up CI services like Travis and Azure Pipelines to run PyVista.
Running on MyBinder¶
This section is for advanced users that would like to install and use PyVista with headless displays on notebook hosting services like MyBinder.
To get started, the Docker container will need to have
xvfb installed through
apt-get. For MyBinder, include the following in
a file called
Then, you need to configure the headless display, for MyBinder, create a file
start and include the following set up script that will run every
time your Docker container is launched:
#!/bin/bash set -x export DISPLAY=:99.0 export PYVISTA_OFF_SCREEN=true export PYVISTA_USE_PANEL=true which Xvfb Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 & sleep 3 set +x exec "$@"
And that’s it! Include PyVista in your Python requirements and get to visualizing your data! If you need more help than this on setting up PyVista for these types of services, hop on Slack and chat with the developers or take a look at this repository that is currently using PyVista on MyBinder.
Running on Remote Servers¶
Using PyVista on remote servers requires similar setup steps as in the above
Docker case. As an example, here are the complete steps to use PyVista on AWS
EC2 Ubuntu 18.04 LTS (
Other servers would work similarly.
After logging into the remote server, install Miniconda and related packages:
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh bash miniconda.sh -b -p miniconda echo '. $HOME/miniconda/etc/profile.d/conda.sh' >> ~/.bashrc && source ~/.bashrc conda create --name vtk_env python=3.7 conda activate vtk_env conda install nodejs # required when importing pyvista in Jupyter pip install jupyter pyvista panel # To avoid "ModuleNotFoundError: No module named 'vtkOpenGLKitPython' " when importing vtk # https://stackoverflow.com/q/32389599 # https://askubuntu.com/q/629692 sudo apt update && sudo apt install python-qt4 libgl1-mesa-glx
Then, configure the headless display:
sudo apt-get install xvfb export DISPLAY=:99.0 export PYVISTA_OFF_SCREEN=true export PYVISTA_USE_PANEL=true Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 & sleep 3
Reconnect to the server with port-forwarding, and start Jupyter:
ssh -i "your-ssh-key" your-user-name@your-server-ip -L 8888:localhost:8888 conda activate vtk_env jupyter notebook --NotebookApp.token='' --no-browser --port=8888
localhost:8888 in the web browser.