Mayavi: Python-3-Unterstützung

Erstellt am 4. Okt. 2013  ·  72Kommentare  ·  Quelle: enthought/mayavi

Haben Sie vor, Python 3 für mayavi zu unterstützen?

Python wird Python 3.4 bald veröffentlichen. Ich denke, Python 3 ist jetzt sehr ausgereift und die Hauptbibliothek von Drittanbietern (numpy, scipy, pandas, matplotlib usw.) unterstützt es jetzt.

Ich verschiebe auch langsam mein ganzes Projekt auf Python 3. Es ist eine ziemlich einfache Aufgabe mit der 2to3-App für "kleine" Projekte. Manchmal kann es zu Konflikten mit alten Standardbibliotheken oder Problemen mit Unicode-/String-Streams kommen, aber nichts Schlimmes ...

Ich denke, es wird etwas komplizierter sein, Mayavi und andere verwandte Projekte zu verschieben, aber es sollte nicht allzu schwer sein, mittelfristig zu tun.

Ich möchte nicht für andere sprechen, aber ich denke, viele Leute warten darauf, ihre Projekte auf Python 3 umzustellen.

"Warte nicht bis Python 4 veröffentlicht wird, bitte..."

:-)

Danke schön

Hilfreichster Kommentar

Sie sollten auch in der Lage sein, die env-Variable von Python zu setzen, bevor Sie mayavi importieren. http://stackoverflow.com/questions/5971312/how-to-set-environment-variables-in-python

Bingo! Das hat funktioniert. Danke @jenshnielsen =:-)

Ich bevorzuge diesen In-Skript-Ansatz im Vergleich zu einer systemweiten Betriebssystemeinstellung der Umgebungsvariablen QT_API , da ich möglicherweise immer noch die pyqt5-Entwicklung in meiner Root-Anaconda-Umgebung durchführen möchte.

Zusammenfassend für jeden armen Schmuck wie mich, der Schwierigkeiten hat, Mayavi auf Anaconda Python 3.5 zum Laufen zu bringen, hier ist mein vorgeschlagener Ansatz, der aus den hilfreichen Ratschlägen in den vorherigen Kommentaren abgeleitet wurde:

  1. Erstellen Sie eine neue env (oldqt), die auf pyqt4 herabgestuft wird, indem Sie den folgenden Befehl im Anaconda-Root-env-Terminal ausführen:
    conda create -n oldqt python=3 pyqt=4

  2. Wechseln Sie zur neu erstellten Umgebung:
    activate oldqt für Windows-Betriebssystem
    source activate oldqt für Mac/Linux-Betriebssystem

  3. installiere mayavi mit dem menpo-Paket-Installer:
    conda install -c menpo mayavi

  4. Verwenden Sie die oldqt Umgebung, um Ihre Python-Mayavi-Skripte auszuführen, und fügen Sie das folgende Snippet oben in diese Skripts ein, um sicherzustellen, dass eine gültige QT-API für mayavi angegeben ist:

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

Alle 72 Kommentare

@hadim Die Pläne für Mayavi auf Python 3 sind damit verbunden, dass VTK auf Python 3 verfügbar ist. Die Roadmap, um dorthin zu gelangen, ist unklar. Siehe http://www.vtk.org/Wiki/VTK/Python_Wrapping_FAQ.

:+1:

:+1:

:+1:

Ich glaube nicht, dass ein :thumbsup: hier viel Gutes tut. Sie sollten eher versuchen, Kitware davon zu überzeugen, Python3 in VTK zu unterstützen. Ohne das gibt es keine Chance für eine Python3-Version von Mayavi.

Ich glaube nicht, dass ein :thumbsup: hier viel Gutes tut. Du solltest es lieber versuchen
Kitware davon überzeugen, Python3 in VTK zu unterstützen. Ohne das geht es nicht
Chance auf eine Python3-Version von Mayavi.

Danke, dass Sie das betonen!

Vielleicht können Sie einen Link zum richtigen Fehlerbericht in VTK über die Portierung auf Python 3 bereitstellen, um Benutzer umzuleiten, die dort +1 sagen?

Für die Aufzeichnung habe ich ein Ticket im VTK-Bugtracker geöffnet: http://www.vtk.org/Bug/view.php?id=15554

Großartige Neuigkeiten! David Gobbi (der Betreuer der VTK-Python-Bindungen) hat auf dieses Bug-Ticket geantwortet und erklärt, dass er bereits Merge-Anfragen erhalten hat, um die Bindungen für die Py3-Unterstützung vorzubereiten, und er arbeitet ab diesem Wochenende konkret an der Py3-Unterstützung:
http://www.vtk.org/Bug/view.php?id=15554#c34787

Ich verstehe vollkommen, dass dies nur der Anfang des Prozesses ist und es möglicherweise einige Zeit dauert, bis die Unterstützung von Python 3 in einer VTK-Version landet, aber ich frage mich, ob Mayavi aktiv etwas tun könnte, um sich auf Python 3 vorzubereiten? Ich nehme an, es werden Änderungen an der Mayavi-Codebasis selbst erforderlich sein, um Python 3 zu unterstützen. Lohnt es sich, eine Diskussion darüber zu beginnen, was diese Arbeit sein würde?

Danke @jabooth ,

Soweit ich das beurteilen kann, hängt der Wechsel von Mayavi zu Python 3 von den wichtigsten Abhängigkeiten ab, die Python 3 unterstützen. Der aktuelle Status ist:

  • [ ] Python vtk
  • [x] Eigenschaften
  • [x] Merkmale
  • [x] pyface
  • [ ] vorstellen

Python 3 VTK-Bindungen sind der Hauptteil und die Tatsache, dass daran gearbeitet wird, ist eine gute Nachricht, aber ohne die Bindungen, die auf einer stabilen Version von VTK verfügbar sind, wäre es sehr schwierig, auf einem Python 3-freundlichen Mayavi zu arbeiten und zu testen.

Darüber hinaus hängt Mayavi selbst stark von Traits, Traitsui und pyface ab, die auch Python 3 unterstützen müssen. Während in diesen Bibliotheken noch keine Unterstützung läuft, gibt es noch keine Unterstützung.

_Dennoch_ können wir in diesem Moment (und @dmsurti hat bereits

Sie können auch Dinge tun, wie zum Beispiel zu "aus zukünftigem Import" wechseln
print_function, division", alle relativen Importe entfernen und wechseln
alles vor sechs.

Ich halte es für Zeitverschwendung, jetzt alles zu tun. Mayavi macht nicht zu viel, was nicht an einem Arbeitstag behoben werden kann, das größere Problem ist, dass VTK Python 3 unterstützt und sobald dies verfügbar ist, werden wir die notwendigen Änderungen vornehmen. Ohne VTK können wir nicht testen. Ich bin mir der jüngsten Arbeiten von David Gobbi bewusst, aber ich werde warten, bis sie offiziell unterstützt und in VTK zusammengeführt werden.

Sieht so aus, als ob der python-py3k-Zweig gerade zusammengeführt wurde: https://gitlab.kitware.com/vtk/vtk/merge_requests/478

Kennt jemand den Status von tvtk? Wenn ich dieses Jahr endlich auf py3k umsteigen könnte, wäre das großartig!

$ 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
>>>

Jahaa!

Gibt es diesbezüglich Fortschritte? Es sieht so aus, als ob die Unterstützung von Python 3 in der nächsten Nebenversion vtk 6.3.1 enthalten sein wird.

Siehe #250

Pull-Request #250 wird zusammengeführt. Schließen.

Nur ein kurzes positives Feedback
Ich verwende WinPython-64bit-3.4.4.1 mit Mayavi 4.4.4 und es funktioniert einwandfrei. Danke an alle Entwickler!

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

@IVUIPPET ,
funktioniert der hier erwähnte workaround
https://github.com/enthought/mayavi/pull/250#issuecomment -207719214
das Problem lösen?

@solarjoe

Habe es noch nicht ausprobiert, aber ich bin hierher zurückgekommen, um meine Arbeitsergebnisse für andere zu posten, die aus sehr begrenztem Python-Hintergrund stammen, aber Erfahrung mit Matlab und C# haben.

Ich habe einen nicht unterstützten Plattformfehler erhalten, den ich kommentiert und dann umgehend gelöscht habe, weil ich versucht habe, Ihren Link (für Python 3.4) mit Python 3.5 zu verwenden
Aber ich schätze Ihre Antwort. Kommentar mit meinem Setup folgen.

Ich habe Anaconda für Python 3.5 installiert/verwendet. Version 3.19.1. Ich habe pip 8.1.1 verwendet. (nicht, dass beides viel ausmacht). 64-Bit, wenn möglich.

Ich habe dann heruntergeladen:
1) VTK-7.0.0-cp35-cp35m-win_amd64.whl
Von: http://www.lfd.uci.edu/~gohlke/pythonlibs/#vtk
Python 3.5 64-Bit-Version von VTK, eine kritische Abhängigkeit für Mayavi (Danke solarjoe!)

CD zum DownloadDir:
pip install VTK-7.0.0-cp35-cp35m-win_amd64.whl

Ich habe ein bisschen gebraucht, um das Fehlen von vcvarsall.bat zu beheben, was das nächste Problem war, auf das ich gestoßen bin, als ich diesen Thread gefunden habe, um VTK mit Python 3.5 zum Laufen zu bringen. Ich habe versucht, verschiedenen Umgebungsvariablen etwas hinzuzufügen und alte Versionen von Visual Studio zu installieren. Hat nicht funktioniert. Habe gerade Visual Studio Community 2015 bekommen, das den C++-Compiler für Python 3.5 enthält. Ich weiß, es ist übertrieben, aber ich habe Stunden damit verbracht, die anderen Dinge zu erledigen, also war dies für mich der Weg des geringsten Widerstands (ich bin ein EE). Achten Sie während der Installation darauf, dass Sie "custom" ausführen und dann unter "Programmiersprachen" alles überprüfen, was mit Python oder C++ zu tun hat.

2) pip install mayavi

Es funktionierte. Nach einem Tag des Googelns habe ich endlich 3D-Grafiken, die Matlab entsprechen oder sogar übertreffen! mein Übergang von Matlab zu Python ist abgeschlossen :D

Wie ich oben @IVIUPPET ‚s Kommentare lese, erinnerte ich mich an eine sehr letzte (11. April) Blog - Post von Microsoft namens Wie mit dem Schmerz‚nicht in der

Nachdem ich Mayavi in ​​Anaconda python 3.5 gemäß den hilfreichen Anweisungen von IVUIPPET installiert habe, bin ich bei der tatsächlichen Ausführung auf eine Straßensperre gestoßen.

Beim Importieren von mayavi erhalte ich folgenden Laufzeitfehler:
RuntimeError: Invalid Qt API 'pyqt5', valid values are: 'pyqt' or 'pyside'

Läuft mayavi nicht unter pyqt5 (was der Standard von Anaconda ist)? Wenn ja, sollte ich pyqt4 installieren und wie benenne ich pyqt4 als Qt-API?

@dreme Leider habe ich noch keine Art von GUI implementiert oder benötige eine QT-API in meinen Programmen, aber basierend auf dem Überfliegen der Dokumentation scheint es noch einiges zu tun zu geben, um auf QT5 umzusteigen. Es würde mich nicht wundern, wenn es eine Inkompatibilität mit mayavi gibt, aber Ihr Fehler scheint mir dies nicht zu suggerieren. Versuchen Sie ohne mayavi, das Problem zu isolieren oder die Hilfe im Zusammenhang mit QT zu kontaktieren. Wenn Sie eine Inkompatibilität mit mayavi und besser noch eine Lösung gefunden haben, halten Sie uns bitte auf dem Laufenden!

Danke für die Antwort IVIUPPET.

Ich denke, ich werde zuerst versuchen, Qt4 zu installieren. Hoffentlich führt es nicht zu bösen Softwarekonflikten mit Anacondas Qt5

Außerdem können Sie beim Kompilieren von VTK auswählen, ob Sie Qt4- oder Qt5-Widgets zur Kompilierzeit haben möchten, denke ich.

Nun, ich habe versucht, VTK aus dem Quellcode (http://www.vtk.org/download/) zu kompilieren, indem ich die Anweisungen unter http://www.vtk.org/Wiki/VTK/Building/Windows verwende

Ich konnte jedoch keine Option zum Angeben von Qt5-Widgets sehen, und der Kompilierungsvorgang (mit Microsoft Visual Studio Community 2015) schlug trotzdem fehl.

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 ==========

Sie möchten VTK_Group_Qt einschalten und dann VTK_QT_VERSION auf 5 setzen (standardmäßig auf 4). Ich entwickle und paketiere Tomviz, das Qt 5 mit VTK/ParaView schon seit einiger Zeit verwendet. Es funktioniert ziemlich gut, es gibt einige Fehler, die wir beheben müssen. Wir bauen auch mit Visual Studio 2015 unter Windows und das schon seit einigen Monaten.

Danke @cryos!

Ich bin kein C++-Programmierer und habe fast keine Erfahrung mit dem Kompilieren von Programmen, also wenn es Ihnen nichts ausmacht, habe ich eine Folgefrage.

Wenn Sie sagen "Schalten Sie VTK_Group_Qt ein und setzen Sie dann VTK_QT_VERSION auf 5", was genau meinen Sie damit? Ich sehe, dass die Begriffe VTK_Group_Qt und VTK_QT_VERSION in einer ganzen Reihe von CMakeLists.txt-Dateien sowie in den Dateien vtkiOS.cmake, vtkAndroid.cmake, VTKConfig.cmake.in und vtkQt.cmake vorkommen.

Am einfachsten ist es, cmake-gui zu verwenden und auf das Build-Verzeichnis zu verweisen. Sie möchten auf VTK_Group_Qt klicken, um ein Häkchen in das Kontrollkästchen zu setzen, auf Konfigurieren klicken und dann würde die VTK_QT_VERSION als neue Variable erscheinen. Alternativ könnte eine CMake-Befehlszeile wie die folgende verwendet werden

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

Diese werden alle in der CMakeCache.txt im build-Verzeichnis gespeichert, aber cmake-gui, cmake-Befehlszeile usw. können verwendet werden, um sie zu bearbeiten. Sie müssen auch das Python-Wrapping auf die gleiche Weise aktivieren. Hoffe das macht es klarer.

@dreme Möchten Sie VTK Qt5 kompilieren? Mayavi/ETS unterstützt nur Qt4 (oder WX): https://github.com/enthought/mayavi/issues/450 . Tut mir leid, wenn ich etwas übersehe...

Danke für deine Geduld @cryos. Mir war nicht bewusst , dass bei der cmake-gui- Programm mitgeliefert wird.

OK, also habe ich cmake-gui gestartet und den Quellordner (C:/MyProjects/VTK-src) und den Build-Ordner (C:/MyProjects/VTK-bin) angegeben.

Wenn ich jedoch auf die Schaltfläche Configure klicke, erhalte ich eine Reihe von Fehlermeldungen (siehe Anhang).

Ich sehe auch den Begriff VTK_Group_Qt nicht unter den aufgelisteten Variablen (siehe angehängtes Bild).

cmakegui

Muss ich es mit der Schaltfläche Add Entry hinzufügen?

Es sieht so aus, als ob es die C- oder C++-Compiler nicht finden kann. Sie sind nicht da, weil es sehr früh fehlschlägt. Sie sagten, Sie verwenden Visual Studio 2015, aber der Generator im Screenshot sagt Visual Studio 2017 (was wirklich neu ist und ich vorerst vermeiden würde). Sie müssen wahrscheinlich die Build-Struktur löschen und erneut starten, aber Visual Studio 2015 auswählen.

Hallo @jonathanrocher , mein ultimatives Ziel ist es, Mayavi unter Anaconda Python 3.5 auszuführen , so wie es

Nach seinen Anweisungen konnte ich mayavi OK installieren, aber wenn ich versuche, es zu importieren, erhalte ich den folgenden Laufzeitfehler:
RuntimeError: Invalid Qt API 'pyqt5', valid values are: 'pyqt' or 'pyside'

Also dachte ich, dass die Lösung vielleicht darin besteht, VTK so zu kompilieren, dass es automatisch Qt5 verwendet, die Standard-Qt-Version, die mit Anaconda geliefert wird.

Aber wie Sie aus den vorherigen Kommentaren sehen können, schwanke ich bei dieser Aufgabe ...

Gibt es vielleicht eine Möglichkeit, mayavi dazu zu bringen, stattdessen WX zu verwenden?

@dreme -- Ich habe die folgenden Anweisungen mit conda für das pysph - Paket getestet ( siehe hier ) :

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

Wenn Sie Probleme haben, teilen Sie uns dies bitte mit.

Hallo @prabhuramachandran , danke für diesen Rat, aber bei mir schien es nicht zu funktionieren.

Als ich eintrat: conda install -c conda-forge matplotlib jupyter pyside

Ich habe folgende Fehlermeldung bekommen:

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.

Es scheint Python 3.5 nicht zu mögen, also habe ich eine neue Umgebung für Python 3.4 erstellt, für die beide Conda-Installationsbefehle tatsächlich funktionierten, dh:

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

Wenn ich jedoch versuche, Mayavi in ​​ein Jupyter-Notebok zu importieren, erhalte ich immer noch den gleichen alten Laufzeitfehler:
RuntimeError: Invalid Qt API 'pyqt5', valid values are: 'pyqt' or 'pyside'

Hey @dreme , ich habe den mayavi Build auf dem menpo Kanal erstellt.

Wir haben das gleiche Problem getroffen. Die Lösung für uns bestand darin, nach der Installation ein Downgrade in pyqt zu erzwingen, also

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

Ich fand, dass die letzte Herabstufung mit allem anderen gut gespielt wurde, zumindest aus dem Standard-Anaconda-Kanal und unserem eigenen.

Tatsächlich hat @scienceopen eine elegantere Lösung, wenn Sie gerne hier eine neue Umgebung erstellen https://github.com/enthought/mayavi/issues/448#issuecomment -258065329 (es stellt sich heraus, dass Sie eine QT4-Umgebung vom Get- gehen)

Ja, die Verwendung einer QT4-Umgebung ist der

Dankbar für die Unterstützung von Python 3; hoffentlich dauert es weniger als drei Jahre für die QT5-Unterstützung

Wie ich oben erwähnt habe (https://github.com/enthought/mayavi/issues/84#issuecomment-205720564), wenn Sie Windows verwenden und nicht an Anaconda gebunden sind, ist es wirklich einfach, Mayavi mit WinPython zum Laufen zu bringen.

Hey zusammen, thx für eure fortwährende Hilfe bei diesem Problem. Schätze es wirklich.

Ich habe beide von @jabooth angebotenen Lösungen Pyqt herunterstufen und eine neue Umgebung mit den Einstellungen python=3 pyqt=4 erstellen), aber keine hat funktioniert. Ich erhalte immer noch denselben verdammten Laufzeitfehler, wenn ich versuche, mayavi zu importieren:

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'

[Ich weiß nicht, ob das von Bedeutung ist, aber ich führe meinen Code in einem Jupyter-Notebook aus]

Ich mag die Anaconda-Python-Distribution wirklich sehr, aber ich komme an den Punkt, an dem ich verzweifelt bereit bin, zu WinPython zu wechseln (nicht, dass ich es unbedingt für schlecht halte ), wie

In diesem Fall @solarjoe , welches Installationsprogramm hast du verwendet? WinPython 3.5.2.3Qt5 oder WinPython 3.5.2.3 ?

@dreme Ich

conda create -n oldqt python=3 pyqt=4

mit der Sie diese Umgebung aktiviert haben (für Windows)

activate oldqt

oder für Mac/Linux

source activate oldqt

Haben Sie die Umgebungsvariable QT_API auf etwas gesetzt? Siehe https://github.com/enthought/pyface/blob/master/pyface/qt/__init__.py für die verwendete Logik.

@dreme Ich

conda create -n oldqt python=3 pyqt=4
mit der Sie diese Umgebung aktiviert haben (für Windows)

oldqt aktivieren

Ja, das habe ich @scienceopen gemacht

Haben Sie die Umgebungsvariable QT_API auf etwas gesetzt? Siehe https://github.com/enthought/pyface/blob/master/pyface/qt/__init__.py für die verwendete Logik.

Nein, dies geschieht alles mit einer ziemlich frischen Installation von Anaconda 3.5

Aber ich denke, Sie haben vielleicht Recht, dass es etwas mit der Variablen QT_API zu tun hat. Hat das Jupyter-Notebook dafür eine Standardeinstellung? Kann ich das vielleicht auf etwas einstellen, das für mayavi in ​​Ordnung ist?

Sie können jederzeit versuchen, die Variable env zu ändern. Ich bezweifle, dass Jupyter es ändert, aber vielleicht etwas anderes. Sie können den aktuellen Wert überprüfen mit:

echo %QT_API%

und ändere es mit

set QT_API= pyqt

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

@dreme , ich verwende eine ältere Version, WinPython-64bit-3.4.4.1 mit Qt4 und Mayavi 4.4.4

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

Sie können auch versuchen, mayavi von http://www.lfd.uci.edu/~gohlke/pythonlibs/ zu installieren, suchen Sie die Seite nach Mayavi. Wählen Sie einfach die richtigen Versionen aus.
Ich bin mir nicht sicher, ob sie mit der Qt5-Version von WinPython funktionieren. Vielleicht musst du dann http://www.lfd.uci.edu/~gohlke/pythonlibs/#pyqt4 installieren.

Sie können jederzeit versuchen, die Variable env zu ändern. Ich bezweifle, dass Jupyter es ändert, aber vielleicht etwas anderes. Sie können den aktuellen Wert überprüfen mit:

echo %QT_API%
und ändere es mit

setze QT_API= pyqt

Nun, das macht mich nur wahnsinnig. Ich habe die Windows-Umgebungsvariable für QT_API wie von @jenshnielsen empfohlen auf pyqt gesetzt und überprüft, ob sie durch Ausführen des Befehls SET .

Aber fmd, ich erhalte immer noch den gleichen alten Laufzeitfehler, der sich beschwert, dass die Qt-API pyqt5 ist . Ich habe erneut in einem cmd-Terminal nachgesehen, und tatsächlich war die Umgebungsvariable QT_API pyqt.

Als ich dann Anaconda Navigator heruntergefahren und erneut überprüft habe, war die QT_API-Variable einfach ganz verschwunden!

ABER, als ich den Anaconda-Navigator neu gestartet und das Jupyter-Notebook unter dem "oldqt" -Kernel geöffnet habe, erhalte ich denselben alten Laufzeitfehler, der sich über pyqt5 beschwert

Wenn Sie ude set verwenden, wird es nur in der aktuellen cmd-Shell wirksam. Keine Auswirkung auf Programme außerhalb der Shell oder in anderen Shells. Sie können googeln, wie Sie die env-Variable dauerhaft von den Fenstern aus einstellen. Zum Testen würde ich vorschlagen, QT_API zu setzen. Öffnen Sie in derselben Shell Python und führen Sie ein einfaches mlab-Beispiel aus, dh Von hier aus http://docs.enthought.com/mayavi/mayavi/mlab.html#a -demo

Sie sollten auch in der Lage sein, die env-Variable von Python zu setzen, bevor Sie mayavi importieren. http://stackoverflow.com/questions/5971312/how-to-set-environment-variables-in-python

@dreme : Wir hatten einen Benutzer mit einem ähnlichen Problem, um zu sehen, ob seine Lösung hilft: https://github.com/menpo/menpo3d/issues/16

Die daraus resultierenden Anweisungen in unserer README sind möglicherweise einfacher zu befolgen:
https://github.com/menpo/menpo3d#visualisierung von -3d-objekten

Schlüsselteil:

Wenn Sie Windows ausführen und diesen Fehler erhalten, versuchen Sie Folgendes:

```
setze QT_API=pyqt
setze ETS_TOOLKIT=qt4
````

@jenshnielsen Ich habe versucht, dies zu automatisieren, damit sich Benutzer (zumindest von Menpo) keine Sorgen machen müssen, aber ich konnte es nicht zum Laufen bringen: https://github.com/menpo/menpo3d/issues/22

Ich werde ein separates Thema ansprechen, um zu versuchen, die Verbesserung der Situation hier zu erörtern.

Sie sollten auch in der Lage sein, die env-Variable von Python zu setzen, bevor Sie mayavi importieren. http://stackoverflow.com/questions/5971312/how-to-set-environment-variables-in-python

Bingo! Das hat funktioniert. Danke @jenshnielsen =:-)

Ich bevorzuge diesen In-Skript-Ansatz im Vergleich zu einer systemweiten Betriebssystemeinstellung der Umgebungsvariablen QT_API , da ich möglicherweise immer noch die pyqt5-Entwicklung in meiner Root-Anaconda-Umgebung durchführen möchte.

Zusammenfassend für jeden armen Schmuck wie mich, der Schwierigkeiten hat, Mayavi auf Anaconda Python 3.5 zum Laufen zu bringen, hier ist mein vorgeschlagener Ansatz, der aus den hilfreichen Ratschlägen in den vorherigen Kommentaren abgeleitet wurde:

  1. Erstellen Sie eine neue env (oldqt), die auf pyqt4 herabgestuft wird, indem Sie den folgenden Befehl im Anaconda-Root-env-Terminal ausführen:
    conda create -n oldqt python=3 pyqt=4

  2. Wechseln Sie zur neu erstellten Umgebung:
    activate oldqt für Windows-Betriebssystem
    source activate oldqt für Mac/Linux-Betriebssystem

  3. installiere mayavi mit dem menpo-Paket-Installer:
    conda install -c menpo mayavi

  4. Verwenden Sie die oldqt Umgebung, um Ihre Python-Mayavi-Skripte auszuführen, und fügen Sie das folgende Snippet oben in diese Skripts ein, um sicherzustellen, dass eine gültige QT-API für mayavi angegeben ist:

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

VTK-7.0.0-cp34-cp34m-win_amd64.whl ist nicht verfügbar unter http://www.lfd.uci.edu/~gohlke/pythonlibs/#vtk , woher ich VTK-7.0.0-cp34- bekommen kann cp34m-win_amd64.whl.

Es war vor einer Woche verfügbar, ich habe es heruntergeladen. Es ist immer noch auf meinem Bürocomputer, auf den ich Ihnen einen Link senden könnte
Montag (auch für die passende Mayavi-Version).

Warum verwenden Sie nicht die neueren Mayavi und VTK?

Bitte senden Sie den Link für VTK-7.0.0-cp34-cp34m-win_amd64.whl. Dankeschön.

Der unten stehende Link sollte etwa 30 Tage gültig sein.

VTK-7.0.0-cp34-cp34m-win_amd64.whl

http://ge.tt/8QvtGkl2

also... wo ist das ungefähr? Ich habe das seit der Gründung im Auge behalten und es ist ein weiteres dieser Projekte, bei denen es einfach nicht zu passieren scheint.

@nevion Wie meinst du? Dies ist ein geschlossenes Problem, und ich habe mayavi an Python 3.6 sowohl unter Windows als auch unter Linux arbeiten.

@mabl Aus dem Issue-Trail geht nicht wirklich klar, dass dies der Fall war, und in wissenschaftlicher Software bleiben die Dinge oft in einem unklaren Zustand mit so etwas wie qt support laggin. Zwischen diesem und der Anaconda-Distribution, die nur 2.7 unterstützt, dachte ich, dass dies immer noch der Fall ist. Haben Sie eine Idee, warum Anaconda immer noch nur 2.7 unterstützt?

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.

Habe gerade Anaconda3 installiert und versucht, mayavi zu installieren. Habe:

(C:\ProgramData\Anaconda3) C:\Users\nort.ARP>conda install mayavi
Abrufen von Paketmetadaten ....................
Paketspezifikationen lösen: .

UnsatisfiableError: Es wurde festgestellt, dass die folgenden Spezifikationen in Konflikt stehen:

  • mayavi -> Apptools 4.2.0 -> Python 2.7*
  • Python 3.6*
    Verwenden Sie "conda info", um die Abhängigkeiten für jedes Paket anzuzeigen.

Hast du dir die 4-Punkte-Anleitung oben von @dreme angesehen /ausprobiert?

Speziell von @dreme

  1. Erstellen Sie eine neue env (oldqt), die auf pyqt4 herabgestuft wird, indem Sie den folgenden Befehl im Anaconda-Root-env-Terminal ausführen:

        conda create -n oldqt python=3.5 pyqt=4
    
  2. Wechseln Sie zur neu erstellten Umgebung:

        activate oldqt #for Windows OS
        source activate #oldqt for Mac/linux OS
    
  3. installiere mayavi mit dem menpo-Paket-Installer:

        conda install -c menpo mayavi
    
  4. Verwenden Sie oldqt env, um Ihre Python-Mayavi-Skripte auszuführen, und fügen Sie das folgende Snippet oben in diese Skripte ein, um sicherzustellen, dass eine gültige QT-API für mayavi angegeben ist:

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

@jonathanrocher Nein, fair genug. Ich habe vielleicht die Behauptung falsch verstanden, dass dies gelöst wurde und einfach funktioniert hat. Ja, es wurde nach dem Rezept installiert.

Ich habe gerade @dreme 4-Punkt-Anweisungen ausprobiert und es ist mit Python 3.6 fehlgeschlagen. Ich musste 3.5 erzwingen:
conda create -n oldqt python=3.5 pyqt=4 und das hat funktioniert.

ja das ist richtig, Mayavi 4.5 benötigt Python 3.5 wegen QT4

So kann ich mayavi mit Qt5 und Python 3.6 + VTK7.1 arbeiten lassen, indem ich zB conda install python=3.6.1 vtk>=7 -c clinicalgraphics und einige aktuelle Commit-Nummern von pyface , traits . und traitsui . Dies scheint gemäß unseren CIs unter OSX, Windows und Linux zu funktionieren.

Auf OSX-Rechnern mit HiDPI-Unterstützung wird jedoch nur 1/4 des Bildschirmbereichs verwendet:

screen shot 2017-10-17 at 17 07 08

Kann das auf Mayavi-Ebene behoben werden?

Es scheint, als ob es vielleicht Teil von VTK7.1 sein sollte:

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

Aber bevor ich genauer hinschaue, dachte ich, ich würde fragen, falls andere Ideen haben.

Eine Option (traurig, würde aber das Fenster füllen) besteht darin, zu warten, bis VTK8 herauskommt, und dann QVTKOpenGLWidget zu verwenden, mit dem Sie HiDPI ausschalten können:

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

Oder vielleicht funktioniert HiDPI "einfach", wenn Sie dieses Widget verwenden.

Ich habe die hier aufgeführten Umgebungsvariablen ausprobiert

Hallo @larsoner , gibt es jetzt Neuigkeiten, da vtk 8.1 verfügbar ist?

Wenn Sie vtk 8.1.0 conda install -c conda-forge vtk installieren, wird Python auf 3.6.2 herabgestuft (und Matplotlib auf 2.1.0 zwischen anderen).
Ich habe pyface 5.1.0, traits 4.6.0, traitsui 5.1.0, conda install -c conda-forge pyface traits traitsui installiert
Ich habe qt 5.6.2.

Die Installation von mayavi 4.5.0 von conda-forge conda install -c conda-forge mayavi beschwert sich über Abhängigkeiten pyqt 4.* , python 3.6* und vtk 7.1.* .

Irgendwelche Vorschläge, wie es mit den aktuellen Paketen funktioniert oder wie genau es mit Python3.6, Qt5 und VTK7.1 funktioniert hat? (Dennoch gibt es die Lösung von @dreme für Python3.5+Qt4) Danke.

Wir verwenden diese Umgebungsdatei für CI seit etwa 6 Monaten unter Linux, OSX und Windows mit gutem Erfolg (außer dem HiDPI-Zeug):

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

Es hat eine Menge Dinge, die Sie nicht brauchen. Die kritischen Komponenten für Mayavi erhielten VTK7 von clinicalgraphics weil sie eine 3.6 Version hatten, und das Anheften an einige Commits von pyface , traits und traitsui von GitHub statt Releases zu verwenden, da die Qt5-unterstützenden Versionen noch nicht veröffentlicht wurden.

Wenn VTK8 bei conda-forge verfügbar ist, könnte es wahrscheinlich sicher ausgetauscht werden, aber ich habe es noch nicht ausprobiert. Ich werde es irgendwann ausprobieren und sehen, ob es das HiDPI-Zeug behebt. Wenn Sie mich schlagen, lassen Sie mich wissen, wie es läuft!

@larsoner , @mpanighel -- Dies ist ein Problem mit VTK 7.x (das Fenster ist nur ein Viertel so groß) und funktioniert mit VTK 8.x einwandfrei. Bleiben Sie dran, um VTK in wenigen Tagen einfacher zu installieren.

Nur zur Info, ich habe Räder für VTK 8.1.0 auf PyPI geschoben, siehe hier: http://prabhuramachandran.blogspot.in/2018/01/vtk-810-wheels-for-all-platforms-on-pypi.html

Großartig @prabhuramachandran !

Das ist großartig @prabhuramachandran ! Vielen Dank!

In diesen Tagen habe ich Ihre neuesten Fixes verfolgt und versucht, Ihr Setup zu reproduzieren und mayavi auf python3.6/pyqt5 unter Linux zu testen, aber ohne Glück (sicherlich für meine sehr grundlegenden Python-Kenntnisse), habe ich höchstwahrscheinlich nur ein offensichtliches Paket übersehen. Ich dachte, mehr Informationen in https://github.com/enthought/mayavi/issues/595 zu posten, um aufgeräumter zu sein.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen