Mayavi: Soporte de Python 3

Creado en 4 oct. 2013  ·  72Comentarios  ·  Fuente: enthought/mayavi

¿Algún plan para admitir Python 3 para mayavi?

Python lanzará Python 3.4 pronto. Creo que Python 3 ahora es muy maduro y la biblioteca principal de terceros (numpy, scipy, pandas, matplotlib, etc.) lo admite ahora.

También estoy moviendo lentamente todo mi proyecto a Python 3. Es una tarea bastante simple con la aplicación 2to3 para proyectos "pequeños". En algún momento puede tener algún conflicto con las antiguas bibliotecas estándar o problemas con unicode / string stream, pero nada malo ...

Supongo que será un poco más complicado mover mayavi y otros proyectos relacionados, pero no debería ser algo demasiado difícil de hacer a medio plazo.

No quiero hablar por otros, pero creo que mucha gente está esperando a mayavi para mover sus proyectos a Python 3.

"No espere hasta que se lance Python 4, por favor ..."

:-)

Salud

Comentario más útil

También debería poder configurar la variable env desde python antes de importar mayavi. http://stackoverflow.com/questions/5971312/how-to-set-environment-variables-in-python

¡Bingo! Eso hizo el truco. Thx @jenshnielsen = :-)

Prefiero este enfoque en el script en comparación con hacer una configuración del sistema operativo en todo el sistema de la variable ambiental QT_API , ya que es posible que aún desee hacer el desarrollo de pyqt5 en mi entorno raíz de Anaconda.

Entonces, en resumen, para cualquier pobre idiota como yo que está luchando para que mayavi se ejecute en anaconda python 3.5, aquí está mi enfoque sugerido extraído de los útiles consejos de los comentarios anteriores:

  1. Cree un nuevo env (oldqt) que se degradará a pyqt4 ejecutando el siguiente comando en la terminal de entorno raíz de anaconda:
    conda create -n oldqt python=3 pyqt=4

  2. Cambie al env recién creado:
    activate oldqt para el sistema operativo Windows
    source activate oldqt para Mac / Linux OS

  3. instale mayavi usando el instalador del paquete menpo:
    conda install -c menpo mayavi

  4. Utilice oldqt env para ejecutar sus scripts mayavi de python, e incluya el fragmento a continuación en la parte superior de estos scripts para asegurarse de que se especifica una API QT válida para mayavi:

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

Todos 72 comentarios

@hadim Los planes para Mayavi en Python 3 están vinculados a que VTK esté disponible en Python 3. La hoja de ruta para llegar allí no está clara. Consulte http://www.vtk.org/Wiki/VTK/Python_Wrapping_FAQ.

: +1:

: +1:

: +1:

No creo que un: pulgar hacia arriba: aquí se haya ido a hacer mucho bien. Debería intentar convencer a Kitware para que admita python3 en VTK. Sin eso, no hay posibilidad de una versión python3 de Mayavi.

No creo que un: pulgar hacia arriba: aquí se haya ido a hacer mucho bien. Deberías intentar
convencer a Kitware para que admita python3 en VTK. Sin eso no hay
posibilidad de una versión python3 de Mayavi.

¡Gracias por enfatizar eso!

Tal vez pueda proporcionar un enlace al informe de errores adecuado en VTK sobre la migración a Python 3, para redirigir a los usuarios que digan +1 allí.

Para que conste, abrí un ticket en el rastreador de errores de VTK: http://www.vtk.org/Bug/view.php?id=15554

¡Una gran noticia! David Gobbi (el mantenedor de los enlaces de VTK Python) respondió a ese ticket de error y declaró que ya recibió solicitudes de fusión para preparar los enlaces para el soporte de Py3, y que está trabajando concretamente en el soporte de Py3 a partir de este fin de semana:
http://www.vtk.org/Bug/view.php?id=15554#c34787

Entiendo completamente que esto es solo el comienzo del proceso y puede pasar algún tiempo antes de que el soporte de Python 3 llegue a una versión de VTK, pero me pregunto si hay algo que Mayavi podría estar haciendo activamente para prepararse para Python 3. Supongo que se necesitarán cambios en la base de código de Mayavi para admitir Python 3, ¿vale la pena comenzar una discusión sobre cuál sería este trabajo?

Gracias @jabooth ,

Por lo que puedo decir, la imagen completa de Mayavi moviéndose a Python 3 depende de las principales dependencias que soportan Python 3. El estado actual es:

  • [] python vtk
  • [x] rasgos
  • [x] traitsui
  • [x] pyface
  • [] prever

Los enlaces de Python 3 VTK son la parte principal y el hecho de que se esté trabajando es una buena noticia, pero sin los enlaces disponibles en una versión estable de VTK sería muy difícil trabajar y probar en un Mayavi compatible con Python 3.

Además, Mayavi en sí depende en gran medida de los rasgos, traitsui y pyface que también necesitan ser compatibles con Python 3. Si bien hay trabajo en progreso en estas bibliotecas, el soporte aún no está disponible.

_Sin embargo_, lo que podemos hacer en este momento (y @dmsurti ya comenzó) es corregir los errores pendientes, mejorar la cobertura de las pruebas y simplificar el código base de Mayavi para que cuando las dependencias estén disponibles en Python 3, el esfuerzo para mover Mayavi a Python 3 será menos.

También puede hacer cosas como cambiar a "desde una importación
print_function, division ", deshacerse de cualquier importación relativa y cambiar
todo a las seis.

Creo que hacer cualquier cosa ahora mismo es una pérdida de tiempo. Mayavi no hace demasiado que no se pueda arreglar en un día de trabajo, el problema más grande es que VTK soporta Python 3 y tan pronto como esté disponible haremos el cambio necesario. Sin VTK, no podremos realizar la prueba. Soy consciente del trabajo reciente de David Gobbi, pero voy a esperar hasta que sea oficialmente compatible y se fusione con VTK.

Parece que la rama python-py3k acaba de fusionarse: https://gitlab.kitware.com/vtk/vtk/merge_requests/478

¿Alguien sabe el estado de tvtk? Si finalmente pudiera hacer la transición a py3k este año, ¡sería genial!

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

¡Yeehaa!

¿Hay algún progreso en esto? Parece que el soporte de Python 3 estará en la próxima versión menor vtk 6.3.1.

Ver # 250

la solicitud de extracción n. ° 250 se fusiona. Clausura.

Solo algunos comentarios positivos rápidos
Estoy usando WinPython-64bit-3.4.4.1 con Mayavi 4.4.4 y funciona bien. ¡Gracias a todos los desarrolladores!

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

@IVIUPPET ,
¿La solución alternativa mencionada aquí?
https://github.com/enthought/mayavi/pull/250#issuecomment -207719214
¿arreglar el problema?

@solarjoe

No lo he probado, pero volví aquí para publicar mis resultados de trabajo para que otros los sigan, provenientes de una experiencia muy limitada de Python, pero con experiencia con Matlab y C #.

Recibí un error de plataforma no compatible que comenté y luego lo eliminé rápidamente, porque estaba tratando de usar su enlace (para Python 3.4) con Python 3.5
Pero agradezco tu respuesta. Comenta con mi configuración a seguir.

Instalé / estoy usando Anaconda para Python 3.5. Versión 3.19.1. Usé pip 8.1.1. (no es que ninguno de estos importe mucho). 64 bits siempre que sea posible.

Luego descargué:
1) VTK-7.0.0-cp35-cp35m-win_amd64.whl
De: http://www.lfd.uci.edu/~gohlke/pythonlibs/#vtk
python 3.5 versión de 64 bits de VTK, una dependencia crítica para Mayavi (¡Gracias solarjoe!)

cd para descargar
pip instalar VTK-7.0.0-cp35-cp35m-win_amd64.whl

Me tomó un poco resolver la ausencia de vcvarsall.bat, que fue el siguiente problema con el que me encontré una vez que encontré este hilo para que VTK funcione con python 3.5. Intenté agregar cosas a diferentes variables de entorno, instalando versiones antiguas de Visual Studio. No funcionó. Terminé obteniendo Visual Studio Community 2015, que contiene el compilador C ++ para Python 3.5. Lo sé, es exagerado, pero pasé horas haciendo las otras cosas, así que para mí este fue el camino de menor resistencia (soy EE). Durante la instalación, asegúrese de hacer "personalizado" y luego en "lenguajes de programación", verifique todo lo que tenga que ver con Python o C ++.

2) pip instalar mayavi

Funcionó. Después de un día de búsqueda en Google, ¡finalmente tengo gráficos en 3D que parecen igualar o superar a Matlab! mi transición de Matlab a Python está completa: D

Mientras leía los comentarios de @IVIUPPET anteriores, recordé una publicación de blog muy reciente (11 de abril) de Microsoft llamada Cómo lidiar con el dolor de "no poder encontrar vcvarsall.bat" . Aunque no estoy seguro, pensé que esa publicación podría ayudar.

Después de instalar Mayavi en Anaconda python 3.5 siguiendo las útiles instrucciones de IVIUPPET, me he topado con un obstáculo al ejecutarlo.

Cuando importo mayavi, aparece el siguiente error de tiempo de ejecución:
RuntimeError: Invalid Qt API 'pyqt5', valid values are: 'pyqt' or 'pyside'

¿Mayavi no se ejecuta bajo pyqt5 (que es el valor predeterminado de anaconda)? Si es así, ¿debería instalar pyqt4 y cómo nomino a pyqt4 como la API de Qt?

@dreme Desafortunadamente, todavía no he implementado ningún tipo de GUI o necesito una API de QT en mis programas, pero basándome en leer la documentación, parece que todavía hay algo de trabajo por hacer para la transición a QT5. No me sorprendería que hubiera alguna incompatibilidad con mayavi, pero su error no parece sugerirme eso. Intente sin mayavi para aislar el problema o contactar ayuda relacionada con QT, me gustaría tener una GUI eventualmente cuando deje mi código para mi laboratorio una vez que me vaya. Si encuentra una incompatibilidad con mayavi y mejor aún una solución, ¡manténganos informados!

Gracias por la respuesta IVIUPPET.

Supongo que primero intentaré instalar Qt4. Con suerte, no presenta desagradables choques de software con Qt5 de Anaconda

Además, al compilar VTK, creo que puede seleccionar si desea widgets Qt4 o Qt5 en tiempo de compilación.

Bueno, intenté compilar VTK desde la fuente (http://www.vtk.org/download/) usando las instrucciones en http://www.vtk.org/Wiki/VTK/Building/Windows

Sin embargo, no pude ver ninguna opción para especificar los widgets Qt5, y el proceso de compilación (usando Microsoft Visual Studio Community 2015) falló de todos modos.

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

Debería activar VTK_Group_Qt y luego establecer VTK_QT_VERSION en 5 (el valor predeterminado es 4). He estado desarrollando y empaquetando Tomviz, que usa Qt 5 con VTK / ParaView desde hace bastante tiempo. Funciona bastante bien, hay algunos errores que debemos solucionar. También estamos construyendo con Visual Studio 2015 en Windows y lo hemos estado haciendo durante algunos meses.

¡Gracias @cryos!

No soy un programador de C ++ y no tengo casi ninguna experiencia en la compilación de programas, así que si no le importa, tengo una pregunta de seguimiento.

Cuando dices "enciende VTK_Group_Qt y luego configura VTK_QT_VERSION en 5", ¿qué quieres decir exactamente ? Veo que los términos VTK_Group_Qt y VTK_QT_VERSION aparecen en bastantes archivos CMakeLists.txt, así como en los archivos vtkiOS.cmake, vtkAndroid.cmake, VTKConfig.cmake.in y vtkQt.cmake.

La forma más fácil es usar cmake-gui y apuntarlo al directorio de compilación. Debería hacer clic en VTK_Group_Qt para marcar la casilla, hacer clic en Configurar y luego VTK_QT_VERSION aparecería como una nueva variable. Alternativamente, se podría usar una línea de comando de CMake como la siguiente

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

Todos estos se almacenan en CMakeCache.txt en el directorio de compilación, pero cmake-gui, línea de comando cmake, etc. se pueden usar para manipularlos. También necesitaría activar la envoltura de Python de la misma manera. Espero que eso lo aclare más.

@dreme ¿Está seguro de que desea compilar VTK para usar Qt5? Mayavi / ETS solo admite Qt4 (o WX): https://github.com/enthought/mayavi/issues/450 . Lo siento si me falta algo ...

Gracias por tu paciencia @cryos. No me di cuenta de que también se proporciona un programa cmake-gui cuando se instala cmake.

De acuerdo, inicié cmake-gui e indiqué las carpetas fuente (C: / MyProjects / VTK-src) y compilación (C: / MyProjects / VTK-bin).

Sin embargo, cuando hago clic en el botón Configure obtengo un montón de mensajes de error (ver adjunto).

Tampoco veo el término VTK_Group_Qt entre las variables que se enumeran (ver imagen adjunta).

cmakegui

¿Necesitaría agregarlo con el botón Add Entry ?

Parece que no puede encontrar los compiladores de C o C ++. No están allí porque está fallando realmente desde el principio, dijiste que estabas usando Visual Studio 2015, pero el generador en la captura de pantalla dice Visual Studio 2017 (que es realmente nuevo, y lo evitaría por ahora). Probablemente necesite eliminar el árbol de compilación y comenzar de nuevo, pero seleccione Visual Studio 2015.

Hola @jonathanrocher , mi objetivo final es ejecutar mayavi en anaconda python 3.5, tal como @IVIUPPET parece ser capaz de hacer.

Siguiendo sus instrucciones, logré instalar mayavi OK, pero cuando intento importarlo obtengo el siguiente error de tiempo de ejecución:
RuntimeError: Invalid Qt API 'pyqt5', valid values are: 'pyqt' or 'pyside'

Entonces, pensé que tal vez la solución sea compilar VTK para que use automáticamente Qt5, que es la versión predeterminada de Qt que se envía con Anaconda.

Pero como puede ver en los comentarios anteriores, estoy tropezando en esta tarea ...

¿Existe quizás una manera de hacer que mayavi use WX en su lugar?

@dreme : probé las siguientes instrucciones con conda para el paquete pysph (ver aquí ):

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

Si tiene algún problema, háganoslo saber.

Hola @prabhuramachandran , gracias por ese consejo, pero no pareció funcionar para mí.

Cuando entré: conda install -c conda-forge matplotlib jupyter pyside

Recibí el siguiente mensaje de error:

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.

No parece gustarle python 3.5, así que creé un nuevo env para python 3.4, para el cual ambos comandos de instalación de conda realmente funcionaron, es decir:

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

Sin embargo, cuando intento importar mayavi en un notebok jupyter, sigo recibiendo el mismo error de tiempo de ejecución anterior:
RuntimeError: Invalid Qt API 'pyqt5', valid values are: 'pyqt' or 'pyside'

Hola @dreme , hice la mayavi en el canal menpo .

Nos hemos topado con el mismo problema. La solución para nosotros fue simplemente forzar una degradación en pyqt después de la instalación, por lo que

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

Encontré que la degradación final jugó bien con todo lo demás, al menos extraída del canal anaconda estándar y del nuestro.

En realidad, @scienceopen tiene una solución más elegante si está contento de hacer un env nuevo aquí https://github.com/enthought/mayavi/issues/448#issuecomment -258065329 (resulta que puede solicitar un env QT4 desde get- ir)

Sí, usar un env QT4 es el camino a seguir. Entonces puede usar QT5 para trabajos HiDPI que no sean Mayavi.

Agradecido por el soporte de Python 3; con suerte, el soporte de QT5 tardará menos de tres años

Además, como mencioné anteriormente (https://github.com/enthought/mayavi/issues/84#issuecomment-205720564) si está en Windows y no está vinculado a Anaconda, es realmente fácil hacer que Mayavi funcione con WinPython.

Hola a todos, gracias por su continua ayuda con este problema. Realmente lo aprecio.

Probé las dos soluciones ofrecidas por

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'

[No sé si esto es importante, pero estoy ejecutando mi código en un cuaderno de Jupyter]

Realmente me gusta la distribución de Python de Anaconda, pero estoy llegando al punto en el que estoy listo, desesperado, para cambiar a WinPython (no es que crea que sea necesariamente malo) como sugirió @solarjoe .

En ese caso @solarjoe , ¿qué instalador WinPython 3.5.2.3Qt5 o WinPython 3.5.2.3 ?

@dreme ,

conda create -n oldqt python=3 pyqt=4

que activaste ese entorno con (para Windows)

activate oldqt

o para Mac / Linux

source activate oldqt

¿Ha configurado la variable de entorno QT_API en algo? Consulte https://github.com/enthought/pyface/blob/master/pyface/qt/__init__.py para conocer la lógica utilizada.

@dreme ,

conda crear -n oldqt python = 3 pyqt = 4
que activaste ese entorno con (para Windows)

activar oldqt

Sí, eso es lo que hice @scienceopen

¿Ha configurado la variable de entorno QT_API en algo? Consulte https://github.com/enthought/pyface/blob/master/pyface/qt/__init__.py para conocer la lógica utilizada.

No, todo esto se está haciendo en una instalación bastante nueva de anaconda 3.5

Pero creo que puede tener razón en que tiene algo que ver con la variable QT_API . ¿El portátil Jupyter tiene una configuración predeterminada para esto? ¿Puedo quizás configurar esto en algo que esté bien para mayavi?

Siempre puedes intentar cambiar la variable env. Dudo que Jupyter lo cambie pero quizás algo más. Puede inspeccionar el valor actual con:

echo %QT_API%

y cámbialo con

set QT_API= pyqt

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

@dreme , estoy usando una versión anterior, WinPython-64bit-3.4.4.1 con Qt4 y Mayavi 4.4.4

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

También puede intentar instalar mayavi desde http://www.lfd.uci.edu/~gohlke/pythonlibs/ , busque Mayavi en la página. Simplemente elija las versiones correctas.
No estoy seguro de si funcionan con la versión Qt5 de WinPython. Quizás tengas que instalar http://www.lfd.uci.edu/~gohlke/pythonlibs/#pyqt4 entonces.

Siempre puedes intentar cambiar la variable env. Dudo que Jupyter lo cambie pero quizás algo más. Puede inspeccionar el valor actual con:

echo% QT_API%
y cámbialo con

establecer QT_API = pyqt

Bueno, esto me está volviendo loco. Configuré la variable de entorno de Windows para QT_API en pyqt como aconsejó @jenshnielsen , y verifiqué dos SET .

Pero fmd, sigo recibiendo el mismo error de tiempo de ejecución quejándose de que la API de Qt es pyqt5 . Verifiqué nuevamente en una terminal cmd, y efectivamente, la variable de entorno QT_API era pyqt.

Luego, cuando apagué Anaconda Navigator y volví a verificar, ¡la variable QT_API había desaparecido por completo!

PERO, cuando reinicié el navegador Anaconda y abrí un cuaderno de Jupyter bajo el kernel "oldqt", aparece el mismo error de tiempo de ejecución quejándose de pyqt5

Cuando establece ude, solo tiene efecto en el shell cmd actual. Ningún efecto en programas fuera del shell o en otros shells. Puede buscar en Google cómo configurar la variable env de forma permanente desde Windows. Para probar, sugeriría configurar QT_API. En el mismo shell, abra Python y ejecute un ejemplo simple de mlab, es decir, desde aquí http://docs.enthought.com/mayavi/mayavi/mlab.html#a -demo

También debería poder configurar la variable env desde python antes de importar mayavi. http://stackoverflow.com/questions/5971312/how-to-set-environment-variables-in-python

@dreme : tuvimos un usuario con un problema similar, vea si su resolución ayuda: https://github.com/menpo/menpo3d/issues/16

Las instrucciones resultantes en nuestro README pueden ser más fáciles de seguir:
https://github.com/menpo/menpo3d#visualizing -3d-objects

Parte clave:

Si está ejecutando Windows y recibe este error, intente:

''
establecer QT_API = pyqt
establecer ETS_TOOLKIT = qt4
`` ``

@jenshnielsen Traté de automatizar esto para que los usuarios (de Menpo al menos) no tuvieran que preocuparse por eso, pero no pude hacer que funcionara: https://github.com/menpo/menpo3d/issues/22

Voy a plantear un tema por separado para tratar de discutir cómo mejorar la situación aquí.

También debería poder configurar la variable env desde python antes de importar mayavi. http://stackoverflow.com/questions/5971312/how-to-set-environment-variables-in-python

¡Bingo! Eso hizo el truco. Thx @jenshnielsen = :-)

Prefiero este enfoque en el script en comparación con hacer una configuración del sistema operativo en todo el sistema de la variable ambiental QT_API , ya que es posible que aún desee hacer el desarrollo de pyqt5 en mi entorno raíz de Anaconda.

Entonces, en resumen, para cualquier pobre idiota como yo que está luchando para que mayavi se ejecute en anaconda python 3.5, aquí está mi enfoque sugerido extraído de los útiles consejos de los comentarios anteriores:

  1. Cree un nuevo env (oldqt) que se degradará a pyqt4 ejecutando el siguiente comando en la terminal de entorno raíz de anaconda:
    conda create -n oldqt python=3 pyqt=4

  2. Cambie al env recién creado:
    activate oldqt para el sistema operativo Windows
    source activate oldqt para Mac / Linux OS

  3. instale mayavi usando el instalador del paquete menpo:
    conda install -c menpo mayavi

  4. Utilice oldqt env para ejecutar sus scripts mayavi de python, e incluya el fragmento a continuación en la parte superior de estos scripts para asegurarse de que se especifica una API QT válida para mayavi:

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

VTK-7.0.0-cp34-cp34m-win_amd64.whl no está disponible en http://www.lfd.uci.edu/~gohlke/pythonlibs/#vtk , desde donde puedo obtener VTK-7.0.0-cp34- cp34m-win_amd64.whl.

Estuvo disponible hace una semana, lo descargué. Todavía está en la computadora de mi oficina. Podría enviarte un enlace.
Lunes (también para la versión correspondiente de Mayavi).

¿Por qué no usas Mayavi y VTK más nuevos?

Envíe el enlace para VTK-7.0.0-cp34-cp34m-win_amd64.whl. Gracias.

El enlace a continuación debe tener una validez de unos 30 días.

VTK-7.0.0-cp34-cp34m-win_amd64.whl

http://ge.tt/8QvtGkl2

así que ... aproximadamente, ¿dónde está esto? He estado pendiente de esto desde el inicio y es otro de esos proyectos con los que no parece suceder.

@nevion ¿Qué quieres decir? Este es un problema cerrado, y tengo a mayavi trabajando en Python 3.6 en Windows y en Linux.

@mabl No

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.

Acabo de instalar Anaconda3 e intenté instalar mayavi. Tiene:

(C: \ ProgramData \ Anaconda3) C: \ Users \ nort.ARP> conda install mayavi
Obteniendo metadatos del paquete ...........
Resolución de especificaciones del paquete:.

UnsatisfiableError: Se encontró que las siguientes especificaciones estaban en conflicto:

  • mayavi -> apptools 4.2.0 -> python 2.7 *
  • Python 3.6 *
    Utilice "conda info"para ver las dependencias de cada paquete.

¿ Miraste / probaste las instrucciones de 4 puntos anteriores de

Específicamente de @dreme

  1. Cree un nuevo env (oldqt) que se degradará a pyqt4 ejecutando el siguiente comando en la terminal de entorno raíz de anaconda:

        conda create -n oldqt python=3.5 pyqt=4
    
  2. Cambie al env recién creado:

        activate oldqt #for Windows OS
        source activate #oldqt for Mac/linux OS
    
  3. instale mayavi usando el instalador del paquete menpo:

        conda install -c menpo mayavi
    
  4. Use el entorno oldqt para ejecutar sus scripts mayavi de python, e incluya el fragmento a continuación en la parte superior de estos scripts para asegurarse de que se especifique una API QT válida para mayavi:

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

@jonathanrocher No, es justo. Quizás estaba malinterpretando la afirmación de que esto se resolvió y simplemente funcionó. Sí, se instaló siguiendo la receta.

Acabo de probar las instrucciones de 4 puntos de
conda create -n oldqt python=3.5 pyqt=4 y funcionó.

sí, eso es correcto, Mayavi 4.5 requiere Python 3.5 debido a QT4

Entonces puedo hacer que mayavi trabaje en Qt5 y Python 3.6 + VTK7.1 usando, por ejemplo, conda install python=3.6.1 vtk>=7 -c clinicalgraphics , y usando algunos números de confirmación recientes de pyface , traits , y traitsui . Esto parece funcionar en OSX, Windows y Linux de acuerdo con nuestros CI.

Sin embargo, en máquinas OSX con soporte HiDPI, solo se usa 1/4 del área de la pantalla:

screen shot 2017-10-17 at 17 07 08

¿Es esto algo que se puede arreglar en el nivel Mayavi?

Parece que tal vez estaba destinado a ser parte de VTK7.1:

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

Pero antes de mirar más a fondo, pensé que preguntaría en caso de que otros tuvieran ideas.

Una opción (triste pero llenaría la ventana) es esperar a que salga VTK8, luego usar QVTKOpenGLWidget, que puede usar para apagar HiDPI:

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

O tal vez HiDPI "simplemente funcionará" al usar este widget.

Probé las variables de entorno que se enumeran aquí, pero no lo solucionan.

Hola @larsoner , ¿hay alguna novedad ahora que vtk 8.1 está disponible?

Al instalar vtk 8.1.0 conda install -c conda-forge vtk , python se degrada a 3.6.2 (y matplotlib a 2.1.0 entre otros).
Instalé pyface 5.1.0, traits 4.6.0, traitsui 5.1.0, conda install -c conda-forge pyface traits traitsui
Tengo qt 5.6.2.

Al instalar mayavi 4.5.0 desde conda-forge conda install -c conda-forge mayavi se queja de las dependencias pyqt 4.* , python 3.6* y vtk 7.1.* .

¿Alguna sugerencia para que funcione con los paquetes actuales o, alternativamente, exactamente cómo lo hizo funcionar con Python3.6, Qt5 y VTK7.1? (Aún existe la solución de @dreme para Python3.5 + Qt4) Gracias.

Hemos estado usando este archivo de entorno para CI durante aproximadamente 6 meses en Linux, OSX y Windows con buen éxito (aparte de las cosas de HiDPI):

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

Tiene un montón de cosas que no necesitas. Los componentes críticos para Mayavi obtenían VTK7 de clinicalgraphics porque tenían una versión 3.6 , y se fijaban en algunas confirmaciones de pyface , traits y traitsui de GitHub en lugar de usar versiones, ya que las versiones compatibles con Qt5 aún no se han lanzado.

Si VTK8 está disponible en conda-forge, probablemente podría intercambiarse con seguridad, pero aún no lo he probado. Lo intentaré en algún momento y veré si soluciona el problema de HiDPI. Si se me adelanta, ¡hágamelo saber!

@larsoner , @mpanighel : este es un problema con VTK 7.x (la ventana es solo un cuarto del tamaño) y funciona bien con VTK 8.x. Esté atento a una forma más fácil de instalar VTK en unos días.

Solo para su información, he empujado ruedas para VTK 8.1.0 en PyPI, consulte aquí: http://prabhuramachandran.blogspot.in/2018/01/vtk-810-wheels-for-all-platforms-on-pypi.html

¡Impresionante @prabhuramachandran !

¡Eso es genial @prabhuramachandran ! ¡Gracias!

En estos días seguí sus últimas correcciones e intenté reproducir su configuración y probar mayavi en python3.6 / pyqt5 en Linux, pero sin suerte (seguramente para mi conocimiento básico de Python), lo más probable es que me falte algún paquete obvio. Pensé en publicar más información en https://github.com/enthought/mayavi/issues/595 para estar más ordenado.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

yassersouri picture yassersouri  ·  5Comentarios

ktavabi picture ktavabi  ·  15Comentarios

GaelVaroquaux picture GaelVaroquaux  ·  13Comentarios

rambalachandran picture rambalachandran  ·  9Comentarios

kitchoi picture kitchoi  ·  10Comentarios