Comment installer Mayavi, une librairie spécialisée dans le dessin 3D, sous l'environnement de Python 3.6, Anaconda (Python 3.x), Spyder.
Mayavi nécessite une ancienne version de PyQt4, et il semble rapide de créer un environnement virtuel Python 2.7 pour le garder cohérent (?).
conda create -n py27mayavi python=2.7 pyqt=4 mayavi vtk spyder
Seules les bibliothèques minimales requises pour mayavi sont répertoriées ici. En outre, veuillez ajouter les bibliothèques nécessaires le cas échéant.
Après cela, j'ai eu un problème avec Spyder pour Mayavi, mais je l'ai résolu en changeant le canal de conda-forge à Anaconda. Voici les paramètres d'environnement virtuel réussis.
conda create -n maya27 python=2.7 anaconda spyder mayavi pyqt=4 qt=4 vtk=6 matplotlib=1 --override-channels --channel anaconda
Le dernier -override-channels --channel an aconda`
semble être un miso [1].
Puisque ver = 1 de matplotlib garde la cohérence avec PyQt (probablement), il peut ne pas être nécessaire de spécifier ver de vtk.
N'oubliez pas `` -override-channels --channel anaconda``` lors de l'ajout de bibliothèques à cet environnement virtuel (il peut être plus rapide de réinitialiser le canal préféré de conda-forge à Anaconda).
De plus, comme il s'agit essentiellement d'une position de "bouger juste", nous n'avons pas enquêté sur la cause. S'il vous plaît, pardonnez-moi. .. [Ajout jusqu'à présent (2018.07.18)]
Pour une raison quelconque, une erreur se produit lorsque j'essaie de définir l'échelle de l'axe et que le noyau meurt. Cela semble être un bogue de mayavi ver4.5.0 ou version ultérieure [2]. La solution est la suivante.
Step 1 Allez dans "(chemin du dossier Anaconda) / envs / (nom de l'environnement virtuel) / Lib / site-packages / mayavi"
Step 2 Ligne 173 de "axes.py" dans le dossier "modules"
self.configure_input_data(self.axes, src.outputs[0])
À
data = src.outputs[0] if not hasattr(src.outputs[0], 'output') else src.outputs[0].output
self.configure_input_data(self.axes, data)
Changé en.
Step 3 Ligne 372 de "decorations.py" dans le dossier "tools"
axes.axes.ranges = axes.module_manager.source.outputs[0].bounds
À
src = axes.module_manager.source
data = src.outputs[0] if not hasattr(src.outputs[0], 'output') else src.outputs[0].output
axes.axes.ranges = data.bounds
Changé en.
Je viens de traduire la dernière partie du site de référence [2] ... Dans mon environnement, c'est la solution et cela fonctionne très bien jusqu'à présent. Le cadre est assez gênant, mais l'intrigue 3D dessinée avec Mayavi est toujours belle. [Ajout 2 (2018.07.18)]
[1] https://conda.io/docs/commands/conda-create.html [2] https://github.com/enthought/mayavi/issues/474