Mayavi: Prise en charge de Python 3

Créé le 4 oct. 2013  ·  72Commentaires  ·  Source: enthought/mayavi

Avez-vous l'intention de prendre en charge Python 3 pour mayavi ?

Python va bientôt publier Python 3.4. Je pense que Python 3 est maintenant très mature et que la principale bibliothèque tierce (numpy, scipy, pandas, matplotlib, etc.) le supporte maintenant.

Je déplace également lentement tout mon projet vers Python 3. C'est une tâche assez simple avec l'application 2to3 pour les "petits" projets. Vous pouvez parfois avoir des conflits avec les anciennes bibliothèques std ou des problèmes avec le flux unicode/string mais rien de grave...

Je suppose que ce sera un peu plus compliqué de déplacer mayavi et d'autres projets liés, mais cela ne devrait pas être quelque chose de trop difficile à faire à moyen terme.

Je ne veux pas parler pour les autres mais je pense que beaucoup de gens attendent mayavi pour déplacer leurs projets vers Python 3.

"N'attendez pas la sortie de Python 4 s'il vous plaît..."

:-)

À votre santé

Commentaire le plus utile

Vous devriez également pouvoir définir la variable env à partir de python avant d'importer mayavi. http://stackoverflow.com/questions/5971312/how-to-set-environment-variables-in-python

Bingo ! Cela a fait l'affaire. Merci @jenshnielsen =:-)

Je préfère de loin cette approche dans le script par rapport à la configuration d'un système d'exploitation à l'échelle du système de la variable d'environnement QT_API , car je souhaiterais peut-être toujours effectuer le développement pyqt5 dans mon environnement Anaconda racine.

Donc, en résumé pour tout pauvre shmuck comme moi qui a du mal à faire fonctionner mayavi sur anaconda python 3.5, voici mon approche suggérée distillée à partir des conseils utiles des commentaires précédents:

  1. Créez un nouvel env (oldqt) qui est rétrogradé en pyqt4 en exécutant la commande suivante dans le terminal env racine anaconda :
    conda create -n oldqt python=3 pyqt=4

  2. Basculez vers l'environnement nouvellement créé :
    activate oldqt pour le système d'exploitation Windows
    source activate oldqt pour Mac/Linux OS

  3. installez mayavi à l'aide du programme d'installation du paquet menpo :
    conda install -c menpo mayavi

  4. Utilisez l'environnement oldqt pour exécuter vos scripts python mayavi et incluez l'extrait ci-dessous en haut de ces scripts pour vous assurer qu'une API QT valide pour mayavi est spécifiée :

import os
os.environ["QT_API"] = "pyqt"

Tous les 72 commentaires

@hadim Les plans de Mayavi sur Python 3 sont liés à la disponibilité de VTK sur Python 3. La feuille de route pour y arriver n'est pas claire. Voir http://www.vtk.org/Wiki/VTK/Python_Wrapping_FAQ.

:+1:

:+1:

:+1:

Je ne pense pas qu'un :thumbsup: ici soit allé faire beaucoup de bien. Vous devriez plutôt essayer de convaincre Kitware de prendre en charge python3 dans VTK. Sans cela, il n'y a aucune chance pour une version python3 de Mayavi.

Je ne pense pas qu'un :thumbsup: ici soit allé faire beaucoup de bien. Tu devrais plutôt essayer de
convaincre Kitware de prendre en charge python3 dans VTK. Sans cela il n'y a pas de
chance pour une version python3 de Mayavi.

Merci d'avoir insisté là-dessus !

Peut-être pouvez-vous fournir un lien vers un rapport de bogue approprié dans VTK sur son portage vers Python 3, pour rediriger les utilisateurs en disant +1 là-bas ?

Pour info j'ai ouvert un ticket sur VTK bug tracker : http://www.vtk.org/Bug/view.php?id=15554

Bonne nouvelle! David Gobbi (le mainteneur des liaisons Python VTK) a répondu sur ce ticket de bogue et a déclaré qu'il avait déjà reçu des demandes de fusion pour préparer les liaisons pour la prise en charge de Py3, et qu'il travaille concrètement sur la prise en charge de Py3 à partir de ce week-end :
http://www.vtk.org/Bug/view.php?id=15554#c34787

Je comprends parfaitement que ce n'est que le début du processus et qu'il faudra peut-être un certain temps avant que la prise en charge de Python 3 n'arrive dans une version de VTK, mais je me demande s'il y a quelque chose que Mayavi pourrait faire activement pour se préparer à Python 3 ? Je suppose que des modifications seront nécessaires à la base de code Mayavi elle-même pour prendre en charge Python 3, cela vaut-il la peine de lancer une discussion sur ce que serait ce travail?

Merci @jabooth ,

Pour autant que je sache, l'image complète du passage de Mayavi à Python 3 dépend des principales dépendances prenant en charge python 3. L'état actuel est le suivant :

  • [ ] Python vtk
  • [x] traits
  • [x] traitsui
  • [x] pyface
  • [ ] envisager

Les liaisons Python 3 VTK sont la partie principale et le fait qu'il y ait du travail en cours est une bonne nouvelle, mais sans les liaisons disponibles sur une version stable de VTK, il serait très difficile de travailler et de tester sur un Mayavi compatible python 3.

De plus, Mayavi lui-même dépend fortement de traits, traitsui et pyface qui doivent également prendre en charge python 3. Bien qu'il y ait des travaux en cours dans ces bibliothèques, le support n'est pas encore là.

_Néanmoins_, ce que nous pouvons faire en ce moment (et @dmsurti a déjà commencé) est de corriger les bogues en attente, d'améliorer la couverture des tests et de simplifier la base de code Mayavi de sorte que lorsque les dépendances seront disponibles dans python 3, l'effort pour déplacer Mayavi vers Python 3 sera moins.

Vous pouvez également faire des choses comme passer à "de l'importation future
print_function, division", se débarrasser de toutes les importations relatives et basculer
tout jusqu'à six.

Je pense que faire quoi que ce soit en ce moment est une perte de temps. Mayavi n'en fait pas trop, ce qui ne peut pas être corrigé en une journée de travail, le plus gros problème est que VTK prend en charge Python 3 et dès que cela sera disponible, nous apporterons les modifications nécessaires. Sans VTK, nous ne pourrons pas tester. Je suis au courant du travail récent de David Gobbi mais je vais attendre qu'il soit officiellement pris en charge et fusionné dans VTK.

On dirait que la branche python-py3k vient d'être fusionnée : https://gitlab.kitware.com/vtk/vtk/merge_requests/478

Est-ce que quelqu'un connaît le statut de tvtk ? Si je pouvais enfin passer à py3k cette année, ce serait génial !

$ python
Python 3.4.3 (default, Mar 25 2015, 17:13:50) 
[GCC 4.9.2 20150304 (prerelease)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import vtk
>>>

Ouais !

Y a-t-il des progrès à ce sujet? Il semble que la prise en charge de Python 3 sera dans la prochaine version mineure vtk 6.3.1.

Voir #250

La demande de tirage #250 est fusionnée. Fermeture.

Juste quelques retours positifs rapides
J'utilise WinPython-64bit-3.4.4.1 avec Mayavi 4.4.4 et cela fonctionne bien. Merci à tous les développeurs !

1.) VTK-7.0.0-cp34-cp34m-win_amd64.whl (http://www.lfd.uci.edu/~gohlke/pythonlibs/#vtk)
2.) pip installer mayavi

@IVIUPPET ,
fait la solution de contournement mentionnée ici
https://github.com/enthought/mayavi/pull/250#issuecomment-207719214
résoudre le problème?

@solarjoe

Je ne l'ai pas essayé, mais je suis revenu ici pour publier mes résultats de travail pour les autres, venant d'une expérience Python très limitée, mais d'une expérience avec Matlab et C#.

Je recevais une erreur de plate-forme non prise en charge que j'ai commentée puis supprimée rapidement, car j'essayais d'utiliser votre lien (pour Python 3.4) avec Python 3.5
Mais j'apprécie votre réponse. Commentez avec ma configuration à suivre.

J'ai installé/j'utilise Anaconda pour Python 3.5. Version 3.19.1. J'ai utilisé pip 8.1.1. (pas que l'un ou l'autre importe beaucoup). 64 bits dans la mesure du possible.

J'ai ensuite téléchargé :
1) VTK-7.0.0-cp35-cp35m-win_amd64.whl
De : http://www.lfd.uci.edu/~gohlke/pythonlibs/#vtk
Python 3.5 version 64 bits de VTK, une dépendance critique pour Mayavi (Merci solarjoe !)

cd à téléchargerDir :
pip installer VTK-7.0.0-cp35-cp35m-win_amd64.whl

Il m'a fallu un peu de temps pour résoudre l'absence de vcvarsall.bat, qui était le problème suivant que j'ai rencontré une fois que j'ai trouvé ce fil pour que VTK fonctionne avec python 3.5. J'ai essayé d'ajouter des éléments à différentes variables d'environnement, en installant d'anciennes versions de Visual Studio. N'a pas fonctionné. J'ai fini par obtenir Visual Studio Community 2015, qui contient le compilateur C++ pour Python 3.5. Je sais, c'est exagéré, mais j'ai passé des heures à faire les autres trucs, donc pour moi c'était le chemin de la moindre résistance (je suis un EE). Lors de l'installation, assurez-vous de faire "personnaliser" puis sous "langages de programmation", vérifiez tout ce qui a à voir avec Python ou C++.

2) pip installer mayavi

Ça a marché. Après une journée de recherche sur Google, j'ai enfin des graphiques 3D qui semblent correspondre ou dépasser Matlab ! ma transition Matlab vers Python est terminée :D

En lisant les commentaires de @IVIUPPET ci-dessus, je me suis souvenu d'un article de blog très récent (11 avril) de Microsoft intitulé Comment faire face à la douleur de "incapable de trouver vcvarsall.bat" . Bien que je ne sois pas sûr, j'ai pensé que ce message pourrait aider.

Après avoir installé Mayavi dans Anaconda python 3.5 en suivant les instructions utiles d'IVIUPPET, j'ai rencontré un obstacle lors de son exécution.

Lorsque j'importe mayavi, j'obtiens l'erreur d'exécution suivante :
RuntimeError: Invalid Qt API 'pyqt5', valid values are: 'pyqt' or 'pyside'

Mayavi ne fonctionne-t-il pas sous pyqt5 (qui est la valeur par défaut d'anaconda) ? Si oui, dois-je installer pyqt4 et comment nommer pyqt4 comme API Qt ?

@dreme Malheureusement, je n'ai encore implémenté aucun type d'interface graphique ou j'ai besoin d'une API QT dans mes programmes, mais en parcourant la documentation, il semble qu'il reste encore du travail à faire pour passer à QT5. Je ne serais pas surpris s'il y avait une incompatibilité avec mayavi, mais votre erreur ne semble pas me le suggérer. Essayez sans mayavi pour isoler le problème ou contacter l'aide liée à QT, j'aimerais éventuellement avoir une interface graphique lorsque je quitterai mon code pour mon laboratoire une fois que je partirai. Si vous avez trouvé une incompatibilité avec mayavi et mieux encore une solution, n'hésitez pas à nous en informer !

Merci pour la réponse IVIUPPET.

Je suppose que je vais d'abord essayer d'installer Qt4. Espérons que cela n'introduit pas de méchants conflits logiciels avec Qt5 d'Anaconda

De plus, lors de la compilation de VTK, vous pouvez sélectionner si vous voulez des widgets Qt4 ou Qt5 au moment de la compilation, je pense.

Eh bien, j'ai essayé de compiler VTK à partir des sources (http://www.vtk.org/download/) en utilisant les instructions sur http://www.vtk.org/Wiki/VTK/Building/Windows

Cependant, je ne voyais aucune option pour spécifier les widgets Qt5, et le processus de compilation (à l'aide de Microsoft Visual Studio Community 2015) a échoué de toute façon.

115>  Generating Code...
115>LINK : fatal error LNK1104: cannot open file '..\..\lib\Debug\vtkViewsCore-7.1.lib'
117>------ Build started: Project: ALL_BUILD, Configuration: Debug Win32 ------
117>  Building Custom Rule C:/MyProjects/VTK-src/CMakeLists.txt
117>  CMake does not need to re-run because C:\MyProjects\CMakeFiles\generate.stamp is up-to-date.
========== Build: 18 succeeded, 99 failed, 0 up-to-date, 0 skipped ==========

Vous voudriez activer VTK_Group_Qt, puis définir VTK_QT_VERSION sur 5 (la valeur par défaut est 4). J'ai développé et empaqueté Tomviz, qui utilise Qt 5 avec VTK/ParaView depuis un certain temps déjà. Cela fonctionne plutôt bien, il y a quelques bugs que nous devons corriger. Nous construisons également avec Visual Studio 2015 sur Windows et ce depuis quelques mois maintenant.

Merci @cryos !

Je ne suis pas un programmeur C++ et n'ai presque aucune expérience dans la compilation de programmes, donc si cela ne vous dérange pas, j'ai une question de suivi.

Lorsque vous dites « allumez VTK_Group_Qt, puis définissez VTK_QT_VERSION sur 5 », que voulez-vous dire exactement ? Je vois que les termes VTK_Group_Qt et VTK_QT_VERSION apparaissent dans un certain nombre de fichiers CMakeLists.txt, ainsi que dans les fichiers vtkiOS.cmake, vtkAndroid.cmake, VTKConfig.cmake.in et vtkQt.cmake.

Le moyen le plus simple est d'utiliser cmake-gui et de le pointer vers le répertoire de construction. Vous voudriez cliquer sur VTK_Group_Qt pour cocher la case, cliquer sur Configurer, puis VTK_QT_VERSION apparaîtrait comme une nouvelle variable. Alternativement, une ligne de commande CMake telle que la suivante pourrait être utilisée

cmake -DVTK_Group_Qt:BOOL=ON -DVTK_QT_VERSION:STRING=5 C:/path/to/vtk/src

Ceux-ci sont tous stockés dans le CMakeCache.txt dans le répertoire de construction, mais cmake-gui, la ligne de commande cmake, etc. peuvent être utilisés pour les manipuler. Vous devrez également activer le wrapping Python de la même manière. Espérons que cela soit plus clair.

@dreme Êtes-vous sûr de vouloir compiler VTK pour utiliser Qt5 ? Mayavi/ETS ne prend en charge que Qt4 (ou WX) : https://github.com/enthought/mayavi/issues/450 . Désolé si j'ai raté quelque chose...

Merci pour votre patience @cryos. Je ne savais pas qu'un programme cmake-gui était également fourni lors de l'installation de cmake.

OK, j'ai donc lancé cmake-gui et indiqué les dossiers source (C:/MyProjects/VTK-src) et build (C:/MyProjects/VTK-bin).

Cependant, lorsque je clique sur le bouton Configure je reçois un tas de messages d'erreur (voir ci-joint).

Je ne vois pas non plus le terme VTK_Group_Qt parmi les variables répertoriées (voir la photo ci-jointe).

cmakegui

Aurais-je besoin de l'ajouter avec le bouton Add Entry ?

Il semble qu'il ne trouve pas les compilateurs C ou C++. Ils ne sont pas là car il échoue très tôt, vous avez dit que vous utilisiez Visual Studio 2015, mais le générateur de la capture d'écran indique Visual Studio 2017 (ce qui est vraiment nouveau, et j'éviterais pour l'instant). Vous devez probablement supprimer l'arborescence de génération et recommencer, mais sélectionnez Visual Studio 2015.

Salut @jonathanrocher , mon objectif ultime est d'exécuter mayavi sous anaconda python 3.5, tout comme @IVIUPPET a semblé pouvoir le faire.

En suivant ses instructions, j'ai réussi à installer mayavi OK, mais lorsque j'essaie de l'importer, j'obtiens l'erreur d'exécution suivante :
RuntimeError: Invalid Qt API 'pyqt5', valid values are: 'pyqt' or 'pyside'

Donc, j'ai pensé que la solution était peut-être de compiler VTK afin qu'il utilise automatiquement Qt5 qui est la version Qt par défaut livrée avec Anaconda.

Mais comme vous pouvez le voir dans les commentaires précédents, je patauge dans cette tâche...

Existe-t-il peut-être un moyen de faire en sorte que mayavi utilise WX à la place ?

@dreme -- j'ai testé les instructions suivantes avec conda pour le package pysph (voir ici ):

$ conda install -c conda-forge matplotlib jupyter pyside
$ conda install -c menpo mayavi

Si vous avez des problèmes s'il vous plaît laissez-nous savoir.

Salut @prabhuramachandran , merci pour ce conseil, mais cela n'a pas semblé fonctionner pour moi.

Quand je suis entré : conda install -c conda-forge matplotlib jupyter pyside

J'ai le message d'erreur suivant :

Fetching package metadata ...........
Solving package specifications: ....

UnsatisfiableError: The following specifications were found to be in conflict:
  - matplotlib
  - python 3.5*
Use "conda info <package>" to see the dependencies for each package.

Il ne semble pas aimer python 3.5, j'ai donc créé un nouvel env pour python 3.4, pour lequel les deux commandes d'installation de conda fonctionnaient réellement, c'est-à-dire :

$ conda install -c conda-forge matplotlib jupyter pyside
$ conda install -c menpo mayavi

Cependant, lorsque j'essaie d'importer mayavi dans un notebok jupyter, j'obtiens toujours la même ancienne erreur d'exécution :
RuntimeError: Invalid Qt API 'pyqt5', valid values are: 'pyqt' or 'pyside'

@dreme , j'ai fait le mayavi sur le canal menpo .

Nous avons rencontré ce même problème. La solution pour nous était juste de forcer un downgrade en pyqt après l'installation, donc

> conda install -c menpo mayavi
> conda install pyqt=4.11.4

J'ai trouvé que le déclassement final s'est bien passé avec tout le reste, du moins tiré du canal anaconda standard et du nôtre.

En fait, @scienceopen a une solution plus élégante si vous êtes heureux de créer un nouvel env ici https://github.com/enthought/mayavi/issues/448#issuecomment -258065329 (il s'avère que vous pouvez demander un env QT4 à partir du get- aller)

Oui, l' utilisation d'un environnement QT4 est la voie à suivre. Ensuite, vous pouvez utiliser QT5 pour le travail HiDPI non Mayavi.

Reconnaissant pour la prise en charge de Python 3 ; j'espère qu'il faudra moins de trois ans pour le support QT5

De plus, comme je l'ai mentionné ci-dessus (https://github.com/enthought/mayavi/issues/84#issuecomment-205720564) si vous êtes sous Windows et que vous n'êtes pas lié à Anaconda, il est très facile de faire fonctionner Mayavi avec WinPython.

Salut à tous, merci pour votre aide continue avec ce problème. J'apprécie beaucoup.

J'ai essayé les deux solutions proposées par @jabooth (rétrogradation de pyqt et création d'un nouvel env avec les paramètres python=3 pyqt=4), mais aucune n'a fonctionné. J'obtiens toujours la même erreur d'exécution lorsque j'essaie d'importer mayavi :

C:\Users\dreme\Anaconda3\envs\py34\lib\site-packages\traitsui\qt4\__init__.py in <module>()
     16 # import pyface.qt before anything else is done so the sipapi
     17 # can be set correctly if needed
---> 18 import pyface.qt
     19 
     20 #----------------------------------------------------------------------------

C:\Users\dreme\Anaconda3\envs\py34\lib\site-packages\pyface\qt\__init__.py in <module>()
     42 elif qt_api != 'pyside':
     43     raise RuntimeError("Invalid Qt API %r, valid values are: 'pyqt' or 'pyside'"
---> 44                        % qt_api)

RuntimeError: Invalid Qt API 'pyqt5', valid values are: 'pyqt' or 'pyside'

[Je ne sais pas si c'est important, mais j'exécute mon code dans un bloc-notes Jupyter]

J'aime beaucoup la distribution python d'Anaconda, mais j'en arrive au point où je suis prêt en désespoir de cause à passer à WinPython (pas que je pense que ce soit nécessairement mauvais) comme @solarjoe l'a suggéré.

Dans ce cas @solarjoe , quel installateur avez-vous utilisé ? WinPython 3.5.2.3Qt5 ou WinPython 3.5.2.3 ?

@dreme je suppose après que vous l'ayez fait

conda create -n oldqt python=3 pyqt=4

avec lequel vous avez activé cet environnement (pour Windows)

activate oldqt

ou pour Mac/Linux

source activate oldqt

Avez-vous défini la variable d'environnement QT_API sur quelque chose ? Voir https://github.com/enthought/pyface/blob/master/pyface/qt/__init__.py pour la logique utilisée.

@dreme je suppose après que vous l'ayez fait

conda créer -n oldqt python=3 pyqt=4
avec lequel vous avez activé cet environnement (pour Windows)

activer oldqt

Oui, c'est ce que j'ai fait @scienceopen

Avez-vous défini la variable d'environnement QT_API sur quelque chose ? Voir https://github.com/enthought/pyface/blob/master/pyface/qt/__init__.py pour la logique utilisée.

Non, tout cela se fait sur une installation assez récente d'anaconda 3.5

Mais je pense que vous avez peut-être raison de dire que cela a quelque chose à voir avec la variable QT_API . Le notebook Jupyter a-t-il un paramètre par défaut pour cela ? Puis-je peut-être régler cela sur quelque chose qui conviendra à mayavi?

Vous pouvez toujours essayer de changer la variable env. Je doute que Jupyter le change mais peut-être autre chose. Vous pouvez inspecter la valeur actuelle avec :

echo %QT_API%

et le changer avec

set QT_API= pyqt

sur Windows http://superuser.com/questions/79612/setting-and-getting-windows-environment-variables-from-the-command-prompt

@dreme , j'utilise une ancienne version, WinPython-64bit-3.4.4.1 avec Qt4 et Mayavi 4.4.4

1.) VTK-7.0.0-cp34-cp34m-win_amd64.whl (http://www.lfd.uci.edu/~gohlke/pythonlibs/#vtk)
2.) pip installer mayavi

Vous pouvez également essayer d'installer mayavi à partir de http://www.lfd.uci.edu/~gohlke/pythonlibs/ , recherchez la page pour Mayavi. Choisissez simplement les bonnes versions.
Je ne sais pas s'ils fonctionnent avec la version Qt5 de WinPython. Vous devrez peut-être installer http://www.lfd.uci.edu/~gohlke/pythonlibs/#pyqt4 alors.

Vous pouvez toujours essayer de changer la variable env. Je doute que Jupyter le change mais peut-être autre chose. Vous pouvez inspecter la valeur actuelle avec :

écho %QT_API%
et le changer avec

définir QT_API=pyqt

Eh bien, ça me rend dingue. J'ai défini la variable d'environnement Windows pour QT_API sur pyqt comme @jenshnielsen l'a conseillé, et SET .

Mais fmd, j'obtiens toujours la même ancienne erreur d'exécution se plaignant que l'API Qt est pyqt5 . J'ai vérifié à nouveau dans un terminal cmd et, bien sûr, la variable d'environnement QT_API était pyqt.

Ensuite, lorsque j'ai fermé Anaconda Navigator et vérifié à nouveau, la variable QT_API venait de disparaître complètement !

MAIS, lorsque j'ai redémarré le navigateur Anaconda et ouvert le bloc-notes Jupyter sous le noyau "oldqt", j'obtiens la même ancienne erreur d'exécution se plaignant de pyqt5

Lorsque vous définissez ude, cela ne prend effet que dans le shell cmd actuel. Aucun effet sur les programmes en dehors du shell ou dans d'autres shells. Vous pouvez rechercher sur Google comment définir la variable env de manière permanente à partir de Windows. Pour tester, je suggérerais de définir QT_API. Dans le même shell, ouvrez python et exécutez un exemple simple de mlab, c'est-à-dire à partir d'ici http://docs.enthought.com/mayavi/mayavi/mlab.html#a -demo

Vous devriez également pouvoir définir la variable env à partir de python avant d'importer mayavi. http://stackoverflow.com/questions/5971312/how-to-set-environment-variables-in-python

@dreme : nous avons eu un utilisateur avec un problème similaire pour voir si sa résolution aide : https://github.com/menpo/menpo3d/issues/16

Les instructions résultantes dans notre README pourraient être plus faciles à suivre :
https://github.com/menpo/menpo3d#visualizing -3d-objects

Élément clé:

Si vous exécutez Windows et recevez cette erreur, essayez :

```
définir QT_API=pyqt
définir ETS_TOOLKIT=qt4
````

@jenshnielsen J'ai essayé d'automatiser cela pour que les utilisateurs (de Menpo au moins) n'aient pas à s'en soucier, mais je n'ai pas pu le faire fonctionner : https://github.com/menpo/menpo3d/issues/22

Je vais soulever une question distincte pour essayer de discuter de l'amélioration de la situation ici.

Vous devriez également pouvoir définir la variable env à partir de python avant d'importer mayavi. http://stackoverflow.com/questions/5971312/how-to-set-environment-variables-in-python

Bingo ! Cela a fait l'affaire. Merci @jenshnielsen =:-)

Je préfère de loin cette approche dans le script par rapport à la configuration d'un système d'exploitation à l'échelle du système de la variable d'environnement QT_API , car je souhaiterais peut-être toujours effectuer le développement pyqt5 dans mon environnement Anaconda racine.

Donc, en résumé pour tout pauvre shmuck comme moi qui a du mal à faire fonctionner mayavi sur anaconda python 3.5, voici mon approche suggérée distillée à partir des conseils utiles des commentaires précédents:

  1. Créez un nouvel env (oldqt) qui est rétrogradé en pyqt4 en exécutant la commande suivante dans le terminal env racine anaconda :
    conda create -n oldqt python=3 pyqt=4

  2. Basculez vers l'environnement nouvellement créé :
    activate oldqt pour le système d'exploitation Windows
    source activate oldqt pour Mac/Linux OS

  3. installez mayavi à l'aide du programme d'installation du paquet menpo :
    conda install -c menpo mayavi

  4. Utilisez l'environnement oldqt pour exécuter vos scripts python mayavi et incluez l'extrait ci-dessous en haut de ces scripts pour vous assurer qu'une API QT valide pour mayavi est spécifiée :

import os
os.environ["QT_API"] = "pyqt"

VTK-7.0.0-cp34-cp34m-win_amd64.whl n'est pas disponible sur http://www.lfd.uci.edu/~gohlke/pythonlibs/#vtk , d'où je peux obtenir VTK-7.0.0-cp34- cp34m-win_amd64.whl.

Il était disponible il y a une semaine, je l'ai téléchargé. C'est toujours sur mon ordinateur de bureau je pourrais vous envoyer un lien sur
Lundi (également pour la version correspondante de Mayavi).

Pourquoi n'utilisez-vous pas les nouveaux Mayavi et VTK ?

Veuillez envoyer le lien pour VTK-7.0.0-cp34-cp34m-win_amd64.whl. Merci.

Le lien ci-dessous devrait être valable environ 30 jours.

VTK-7.0.0-cp34-cp34m-win_amd64.whl

http://ge.tt/8QvtGkl2

alors... à peu près où est-ce ? Je garde un œil sur cela depuis le début et c'est un autre de ces projets qui ne semble tout simplement pas se produire.

@nevion Comment ça ? C'est un problème clos, et j'ai mayavi qui travaille sur Python 3.6 sous Windows ainsi que Linux.

@mabl Il

conda install mayavi
Fetching package metadata .........
Solving package specifications: .

UnsatisfiableError: The following specifications were found to be in conflict:
  - mayavi -> apptools 4.2.0 -> python 2.7* -> openssl 1.0.1*
  - python 3.6*
Use "conda info <package>" to see the dependencies for each package.

Je viens d'installer Anaconda3 et j'ai essayé d'installer mayavi. Eu:

(C:\ProgramData\Anaconda3) C:\Users\nort.ARP>conda install mayavi
Récupération des métadonnées du package ...........
Résolution des spécifications du package : .

UnsatisfiableError : les spécifications suivantes sont en conflit :

  • mayavi -> apptools 4.2.0 -> python 2.7*
  • python 3.6*
    Utilisez "conda info" pour voir les dépendances de chaque package.

Avez-vous regardé/essayé les instructions en 4 points ci-dessus de @dreme ?

Spécifiquement de @dreme

  1. Créez un nouvel env (oldqt) qui est rétrogradé en pyqt4 en exécutant la commande suivante dans le terminal env racine anaconda :

        conda create -n oldqt python=3.5 pyqt=4
    
  2. Basculez vers l'environnement nouvellement créé :

        activate oldqt #for Windows OS
        source activate #oldqt for Mac/linux OS
    
  3. installez mayavi à l'aide du programme d'installation du paquet menpo :

        conda install -c menpo mayavi
    
  4. Utilisez l'environnement oldqt pour exécuter vos scripts python mayavi et incluez l'extrait ci-dessous en haut de ces scripts pour vous assurer qu'une API QT valide pour mayavi est spécifiée :

        import os
        os.environ["QT_API"] = "pyqt"
    

@jonathanrocher Non, d'

Je viens d'essayer les instructions @dreme en 4 points et cela a échoué avec python 3.6. J'ai dû forcer 3.5 :
conda create -n oldqt python=3.5 pyqt=4 et cela a fonctionné.

oui c'est correct, Mayavi 4.5 nécessite Python 3.5 en raison de QT4

Je peux donc faire travailler mayavi sur Qt5 et Python 3.6 + VTK7.1 en utilisant par exemple conda install python=3.6.1 vtk>=7 -c clinicalgraphics , et en utilisant des numéros de commit récents de pyface , traits , et traitsui . Cela semble fonctionner sur OSX, Windows et Linux selon nos CI.

Cependant, sur les machines OSX prenant en charge HiDPI, seul 1/4 de la zone d'écran est utilisé :

screen shot 2017-10-17 at 17 07 08

Est-ce quelque chose qui peut être corrigé au niveau de Mayavi ?

Il semble qu'il était peut-être destiné à faire partie de VTK7.1 :

https://public.kitware.com/pipermail/vtk-developers/2016-November/034456.html

Mais avant d'aller plus loin, j'ai pensé que je demanderais au cas où d'autres auraient des idées.

Une option (triste mais remplirait la fenêtre) consiste à attendre que VTK8 sorte, puis à utiliser QVTKOpenGLWidget, que vous pouvez utiliser pour désactiver HiDPI :

https://www.vtk.org/doc/nightly/html/classQVTKOpenGLWidget.html#details

Ou peut-être que HiDPI "fonctionnera simplement" lors de l'utilisation de ce widget.

J'ai essayé les variables d'environnement répertoriées ici, mais elles ne le résolvent pas.

Salut @larsoner , y a-t-il des nouvelles maintenant que vtk 8.1 est disponible ?

En installant vtk 8.1.0 conda install -c conda-forge vtk , python est rétrogradé à 3.6.2 (et matplotlib à 2.1.0 entre autres).
J'ai installé pyface 5.1.0, traits 4.6.0, traitsui 5.1.0, conda install -c conda-forge pyface traits traitsui
J'ai qt 5.6.2.

L'installation de mayavi 4.5.0 à partir de conda-forge conda install -c conda-forge mayavi se plaint des dépendances pyqt 4.* , python 3.6* et vtk 7.1.* .

Une suggestion pour le faire fonctionner avec les packages actuels ou, à défaut, comment l'avez-vous fait fonctionner avec Python3.6, Qt5 et VTK7.1 ? (Il y a toujours la solution de @dreme pour Python3.5+Qt4) Merci.

Nous utilisons ce fichier d'environnement pour CI depuis environ 6 mois sur Linux, OSX et Windows avec un bon succès (autre que les trucs HiDPI):

https://github.com/mne-tools/mne-python/blob/master/environment.yml

Il contient un tas de choses dont vous n'avez pas besoin. Les composants critiques pour Mayavi obtenaient VTK7 à partir de clinicalgraphics car ils avaient une version 3.6 , et épinglaient certains commits de pyface , traits et traitsui de GitHub au lieu d'utiliser les versions car les versions prenant en charge Qt5 n'ont pas encore été publiées.

Si VTK8 est disponible sur conda-forge, il pourrait probablement être échangé en toute sécurité, mais je ne l'ai pas encore essayé. Je vais essayer à un moment donné et voir si cela résout le problème HiDPI. Si vous me devancez, dites-moi comment ça se passe !

@larsoner , @mpanighel -- c'est un problème avec VTK 7.x (la fenêtre n'étant qu'un quart de la taille) et fonctionne bien avec VTK 8.x. Restez à l'écoute pour un moyen plus simple d'installer VTK en quelques jours.

Juste pour info, j'ai poussé des roues pour VTK 8.1.0 sur PyPI, voir ici : http://prabhuramachandran.blogspot.in/2018/01/vtk-810-wheels-for-all-platforms-on-pypi.html

Génial @prabhuramachandran !

C'est super @prabhuramachandran ! Merci!

Ces jours-ci, j'ai suivi vos derniers correctifs et essayé de reproduire votre configuration et de tester mayavi sur python3.6/pyqt5 sous Linux, mais sans succès (sûrement pour mes connaissances très basiques en python), il me manque probablement un paquet évident. J'ai pensé publier plus d'informations sur https://github.com/enthought/mayavi/issues/595 pour être plus ordonné.

Cette page vous a été utile?
0 / 5 - 0 notes