Open matthiasfabry opened 3 years ago
Just a quick question and some comments, why are you using VTK 8.2? I am not sure how the conda-forge mayavi package is built but if it is a wheel then it likely was built against a specific VTK version. I find that the most reliable way to get things working is to install VTK and mayavi via pip, that way you get VTK-9.x and Mayavi is then built for the version of VTK that you have installed. I am not sure what the Qt issues are. I did try conda recently for Python 3.8 but installed mayavi and vtk from pip and it all worked well for me.
Thanks for your quick reply. There is no particular reason I chose vtk 8, except that I've read around on the issues that there are some issues with vtk 9 and the later pythons.
anyway, I did as you say:
conda create -n pymayavi python=3.8
conda activate pymayavi
conda install pyqt
pip install vtk
pip install mayavi
This indeed builds mayavi and vtk, but now, without the ETS env var, no scene even spawns. With the ETS env var, the same RuntimeError: No pyface.toolkits plugin found for toolkit qt5
happens
I now have:conda list
# packages in environment at /Users/matthiasf/opt/miniconda3/envs/pymayavi:
#
# Name Version Build Channel
apptools 5.1.0 pypi_0 pypi
ca-certificates 2020.12.5 h033912b_0 conda-forge
certifi 2020.12.5 py38h50d1736_1 conda-forge
configobj 5.0.6 pypi_0 pypi
dbus 1.13.6 h0c50699_1 conda-forge
envisage 5.0.0 pypi_0 pypi
expat 2.2.10 h1c7c35f_0 conda-forge
gettext 0.19.8.1 h7937167_1005 conda-forge
glib 2.66.7 he49afe7_1 conda-forge
glib-tools 2.66.7 he49afe7_1 conda-forge
icu 68.1 h74dc148_0 conda-forge
importlib-metadata 3.7.2 pypi_0 pypi
importlib-resources 5.1.2 pypi_0 pypi
jpeg 9d hbcb3906_0 conda-forge
krb5 1.17.2 h60d9502_0 conda-forge
libclang 11.1.0 default_he082bbe_0 conda-forge
libcxx 11.1.0 habf9029_0 conda-forge
libedit 3.1.20191231 h0678c8f_2 conda-forge
libffi 3.3 h046ec9c_2 conda-forge
libglib 2.66.7 hd556434_1 conda-forge
libiconv 1.16 haf1e3a3_0 conda-forge
libllvm11 11.1.0 hd011deb_0 conda-forge
libpng 1.6.37 h7cec526_2 conda-forge
libpq 13.1 h052a64a_2 conda-forge
lz4-c 1.9.3 h046ec9c_0 conda-forge
mayavi 4.7.2 pypi_0 pypi
mysql-common 8.0.23 h694c41f_1 conda-forge
mysql-libs 8.0.23 hbeb7981_1 conda-forge
ncurses 6.2 h2e338ed_4 conda-forge
nspr 4.29 hbc8d48c_1 conda-forge
nss 3.47 hc0980d9_0 conda-forge
numpy 1.20.1 pypi_0 pypi
openssl 1.1.1j hbcf498f_0 conda-forge
pcre 8.44 hb1e8313_0 conda-forge
pip 21.0.1 pyhd8ed1ab_0 conda-forge
pyface 7.3.0 pypi_0 pypi
pygments 2.8.1 pypi_0 pypi
pyqt 5.12.3 py38h50d1736_7 conda-forge
pyqt-impl 5.12.3 py38h721a93c_7 conda-forge
pyqt5-sip 4.19.18 py38h5745d40_7 conda-forge
pyqtchart 5.12 py38h721a93c_7 conda-forge
pyqtwebengine 5.12.1 py38h721a93c_7 conda-forge
python 3.8.8 h4e93d89_0_cpython conda-forge
python_abi 3.8 1_cp38 conda-forge
qt 5.12.9 h126340a_4 conda-forge
readline 8.0 h0678c8f_2 conda-forge
setuptools 49.6.0 py38h50d1736_3 conda-forge
six 1.15.0 pypi_0 pypi
sqlite 3.34.0 h17101e1_0 conda-forge
tk 8.6.10 h0419947_1 conda-forge
traits 6.2.0 pypi_0 pypi
traitsui 7.1.1 pypi_0 pypi
vtk 9.0.1 pypi_0 pypi
wheel 0.36.2 pyhd3deb0d_0 conda-forge
xz 5.2.5 haf1e3a3_1 conda-forge
zipp 3.4.1 pypi_0 pypi
zlib 1.2.11 h7795811_1010 conda-forge
zstd 1.4.9 h582d3a0_0 conda-forge
This does seem to be a qt or pyface issue. No matter where I install vtk/pyqt or mayavi from, I still hit the RuntimeError: No pyface.toolkits plugin found for toolkit qt5
error. I've looked in the pyface/base_toolkit.py file and printed the available toolkits from the entrypoint pyface.toolkits:
(EntryPoint(name='null', value='pyface.ui.null.init:toolkit_object', group='pyface.toolkits'), EntryPoint(name='qt', value='pyface.ui.qt4.init:toolkit_object', group='pyface.toolkits'), EntryPoint(name='qt4', value='pyface.ui.qt4.init:toolkit_object', group='pyface.toolkits'), EntryPoint(name='wx', value='pyface.ui.wx.init:toolkit_object', group='pyface.toolkits'))
Obviously, no qt5
to be found in this list, hence the Exception. However I find qt4 is listed here, which is not even installed, qt5.12.9 and pyqt5.12.3 are installed. Is it possible this piece of toolkit linking needs to be updated, or did I not install pyface from the correct repo?
BTW: using ETS_TOOLKIT=wx, which is listed in the available toolkit, does not solve my problem, as then
RuntimeError: No pyface.toolkits plugin could be loaded for wx
It fails to load properly.
After some more trial and error using different installation channels and reverting to python3.6, I finally get a satisfactory mlab interface again.
now I have:
conda list:
apptools 5.1.0 pypi_0 pypi
blas 1.0 mkl
ca-certificates 2021.1.19 hecd8cb5_1
certifi 2020.12.5 py36hecd8cb5_0
configobj 5.0.6 pypi_0 pypi
envisage 5.0.0 pypi_0 pypi
importlib-metadata 2.0.0 py_1
importlib_metadata 2.0.0 1
importlib_resources 5.1.2 py36hecd8cb5_1
intel-openmp 2019.4 233
libcxx 10.0.0 1
libedit 3.1.20191231 h1de35cc_1
libffi 3.3 hb1e8313_2
libgfortran 3.0.1 h93005f0_2
mayavi 4.7.2 pypi_0 pypi
mkl 2019.4 233
mkl-service 2.3.0 py36h9ed2024_0
mkl_fft 1.3.0 py36ha059aab_0
mkl_random 1.1.1 py36h959d312_0
ncurses 6.2 h0a44026_1
numpy 1.19.2 py36h456fd55_0
numpy-base 1.19.2 py36hcfb5961_0
openssl 1.1.1j h9ed2024_0
pip 21.0.1 py36hecd8cb5_0
pyface 7.3.0 pypi_0 pypi
pygments 2.8.1 pypi_0 pypi
pyqt5 5.15.4 pypi_0 pypi
pyqt5-qt5 5.15.2 pypi_0 pypi
pyqt5-sip 12.8.1 pypi_0 pypi
python 3.6.13 h88f2d9e_0
python.app 3 py36h9ed2024_0
readline 8.1 h9ed2024_0
scipy 1.5.2 py36h912ce22_0
setuptools 52.0.0 py36hecd8cb5_0
six 1.15.0 py36hecd8cb5_0
sqlite 3.33.0 hffcf06c_0
tk 8.6.10 hb0a8c7a_0
traits 6.2.0 pypi_0 pypi
traitsui 7.1.1 pypi_0 pypi
vtk 9.0.1 pypi_0 pypi
wheel 0.36.2 pyhd3eb1b0_0
xz 5.2.5 h1de35cc_0
zipp 3.4.0 pyhd3eb1b0_0
zlib 1.2.11 h1de35cc_3
and have no environment variables (ETS_TOOLKIT/QT_API) set. What ended up working is using pip install mayavi
(even though the wheel building failed, the installation was somehow succesfull).
I wouldn't say this was an easy or straightforward process. I would propose to consolidate a built wheel to conda-forge so less knowledgable/persevering data scientists can just conda install mayavi
and have a working mayavi interface from python.
But for me at least this issue is solved, and may be closed.
I'm jumping through similar hoops...
🎉 I did the same steps as @matthiasfabry just above (i.e. I obtained a similar conda list output, by creating a new python 3.6 conda env, installing numpy
and scipy
through conda
, and installing vtk
, pyqt5
, pyface
, and mayavi
through pip), and also wheels building failed, though for me mayavi didn't work then, but what solved it was installing an older vtk as per here: https://anhquancao.github.io/blog/2022/how-to-install-mayavi-with-python-3-on-ubuntu-2004-using-pip-or-anaconda/
here is my conda list
# Name Version Build Channel
apptools 5.2.1 pypi_0 pypi
blas 1.0 mkl
ca-certificates 2023.08.22 hecd8cb5_0
certifi 2021.5.30 py36hecd8cb5_0
configobj 5.0.8 pypi_0 pypi
cycler 0.11.0 pypi_0 pypi
envisage 6.1.1 pypi_0 pypi
importlib-metadata 4.8.3 pypi_0 pypi
importlib-resources 5.4.0 pypi_0 pypi
intel-openmp 2023.1.0 ha357a0b_43547
kiwisolver 1.3.1 pypi_0 pypi
libcxx 14.0.6 h9765a3e_0
libffi 3.3 hb1e8313_2
libgfortran 3.0.1 h93005f0_2
matplotlib 3.3.4 pypi_0 pypi
mayavi 4.8.0 pypi_0 pypi
mkl 2019.4 233
mkl-service 2.3.0 py36h9ed2024_0
mkl_fft 1.3.0 py36ha059aab_0
mkl_random 1.1.1 py36h959d312_0
ncurses 6.4 hcec6c5f_0
numpy 1.19.2 py36h456fd55_0
numpy-base 1.19.2 py36hcfb5961_0
openssl 1.1.1w hca72f7f_0
pillow 8.4.0 pypi_0 pypi
pip 21.2.2 py36hecd8cb5_0
pyface 7.4.4 pypi_0 pypi
pygments 2.14.0 pypi_0 pypi
pyparsing 3.1.1 pypi_0 pypi
pyqt5 5.15.6 pypi_0 pypi
pyqt5-qt5 5.15.11 pypi_0 pypi
pyqt5-sip 12.9.1 pypi_0 pypi
python 3.6.13 h88f2d9e_0
python-dateutil 2.8.2 pypi_0 pypi
readline 8.2 hca72f7f_0
scipy 1.5.2 py36h912ce22_0
setuptools 58.0.4 py36hecd8cb5_0
six 1.16.0 pyhd3eb1b0_1
sqlite 3.41.2 h6c40b1e_0
tk 8.6.12 h5d9f67b_0
traits 6.4.1 pypi_0 pypi
traitsui 7.4.3 pypi_0 pypi
typing-extensions 4.1.1 pypi_0 pypi
vtk 8.1.2 pypi_0 pypi
wheel 0.37.1 pyhd3eb1b0_0
xz 5.4.2 h6c40b1e_0
zipp 3.6.0 pypi_0 pypi
zlib 1.2.13 h4dc903c_0
I created a fresh conda environment with:
conda create -n pymayavi python=3.7 vtk=8 pyqt=5
thenconda activate pymayavi
conda install mayavi
This creates an environment with:Upon running a python mlab script (simply plotting a 3D point cloud with mlab.points3d()):
this runs into ImportErrors of:
and
After installing both of these, I still don't have a working mayavi.mlab environment, as the example above spawns a blank mayavi scene. The buttons on the top are unresponsive. Setting then the environment variables:
Results in:
What might be the issue here?
It's weird as I remember this working a couple months ago (although, granted, I do not have the package list from that time).