Mayavi: Suporte Python 3

Criado em 4 out. 2013  ·  72Comentários  ·  Fonte: enthought/mayavi

Algum plano para oferecer suporte a Python 3 para mayavi?

O Python lançará o Python 3.4 em breve. Eu acho que o Python 3 agora está muito maduro e as principais bibliotecas de terceiros (numpy, scipy, pandas, matplotlib, etc) suportam agora.

Também estou movendo lentamente todo o meu projeto para Python 3. É uma tarefa muito simples com o aplicativo 2to3 para projetos "pequenos". Você pode às vezes ter algum conflito com libs std antigas ou problemas com fluxo Unicode / string, mas nada de ruim ...

Eu acho que será um pouco mais complicado mover mayavi e outros projetos relacionados, mas não deve ser algo muito difícil de fazer em um período intermediário.

Não quero falar pelos outros, mas acho que muitas pessoas estão esperando mayavi para mover seus projetos para Python 3.

"Não espere até que o Python 4 seja lançado, por favor ..."

:-)

Saúde

Comentários muito úteis

Você também deve ser capaz de definir a variável env do python antes de importar mayavi. http://stackoverflow.com/questions/5971312/how-to-set-environment-variables-in-python

Bingo! Isso funcionou. Thx @jenshnielsen = :-)

Eu prefiro muito mais essa abordagem in-script em comparação a fazer uma configuração de sistema operacional para todo o sistema da variável de ambiente QT_API , pois ainda posso querer fazer o desenvolvimento pyqt5 em meu ambiente raiz do Anaconda.

Então, em resumo para qualquer pobre coitado como eu que está lutando para fazer o mayavi rodar no anaconda python 3.5, aqui está minha abordagem sugerida destilada do conselho útil nos comentários anteriores:

  1. Crie um novo env (oldqt) que é rebaixado para pyqt4 executando o seguinte comando no terminal env do anaconda root:
    conda create -n oldqt python=3 pyqt=4

  2. Mude para o ambiente recém-criado:
    activate oldqt para sistema operacional Windows
    source activate oldqt para Mac / Linux OS

  3. instale mayavi usando o instalador de pacote menpo:
    conda install -c menpo mayavi

  4. Use oldqt env para executar seus scripts python mayavi e inclua o snippet abaixo no início desses scripts para garantir que uma API QT válida para mayavi seja especificada:

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

Todos 72 comentários

@hadim Os planos para Mayavi em Python 3 estão ligados ao VTK estar disponível em Python 3. O roteiro para chegar lá não está claro. Consulte http://www.vtk.org/Wiki/VTK/Python_Wrapping_FAQ.

: +1:

: +1:

: +1:

Eu não acho que um: thumbsup: aqui se foi fazer muito bem. Em vez disso, você deve tentar convencer o Kitware a oferecer suporte a python3 no VTK. Sem isso, não há chance de uma versão python3 do Mayavi.

Eu não acho que um: thumbsup: aqui se foi fazer muito bem. Você deveria tentar
convencer o Kitware a oferecer suporte a python3 em VTK. Sem isso não há
chance de uma versão python3 do Mayavi.

Obrigado por enfatizar isso!

Talvez você possa fornecer um link para o relatório de bug adequado no VTK sobre portá-lo para Python 3, para redirecionar os usuários dizendo +1 lá?

Para registro, abri um tíquete no rastreador de bug VTK: http://www.vtk.org/Bug/view.php?id=15554

Boas notícias! David Gobbi (o mantenedor dos vínculos VTK Python) respondeu a esse tíquete de bug e afirmou que já recebeu solicitações de mesclagem para preparar os vínculos para o suporte Py3 e está trabalhando concretamente no suporte Py3 a partir deste fim de semana:
http://www.vtk.org/Bug/view.php?id=15554#c34787

Eu entendo perfeitamente que este é apenas o início do processo e pode demorar algum tempo até que o suporte do Python 3 chegue ao lançamento do VTK, mas eu me pergunto se há algo que Mayavi possa estar fazendo ativamente para se preparar para o Python 3? Suponho que serão necessárias alterações na própria base de código do Mayavi para oferecer suporte ao Python 3. Vale a pena iniciar uma discussão sobre como seria esse trabalho?

Obrigado @jabooth ,

Pelo que eu posso dizer, o quadro completo para Mayavi mudar para Python 3 depende das principais dependências que suportam python 3. O status atual é:

  • [] python vtk
  • [x] traços
  • [x] traitsui
  • [x] face
  • [] prever

Os vínculos do Python 3 VTK são a parte principal e o fato de haver trabalho em andamento é uma boa notícia, mas sem os vínculos disponíveis em uma versão estável do VTK seria muito difícil trabalhar e testar em um Mayavi compatível com o python 3.

Além disso, o próprio Mayavi depende fortemente de traits, traitsui e pyface, que também precisam suportar o python 3. Embora haja trabalho em andamento nessas bibliotecas, o suporte ainda não existe.

_No entanto_, o que podemos fazer neste momento, (e @dmsurti já começou) é corrigir bugs pendentes, melhorar a cobertura dos testes e simplificar a base de código do Mayavi para que quando as dependências estiverem disponíveis no python 3, o esforço para mover o Mayavi para o Python 3 será menos.

Você também pode fazer coisas como mudar para "de importação futura
print_function, division ", livrar-se de quaisquer importações relativas e alternar
tudo até seis.

Acho que fazer qualquer coisa agora é perda de tempo. Mayavi não faz muito que não possa ser consertado em um dia de trabalho, o maior problema é o VTK suportando Python 3 e assim que estiver disponível faremos as alterações necessárias. Sem VTK, não seremos capazes de testar. Estou ciente do trabalho recente de David Gobbi, mas vou esperar até que seja oficialmente suportado e incorporado ao VTK.

Parece que o branch python-py3k acabou de ser mesclado: https://gitlab.kitware.com/vtk/vtk/merge_requests/478

Alguém sabe o status do tvtk? Se eu pudesse finalmente fazer a transição para py3k este ano, seria ótimo!

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

Existe algum progresso nisso? Parece que o suporte para Python 3 estará na próxima versão secundária vtk 6.3.1.

Veja # 250

a solicitação pull # 250 foi mesclada. Fechando.

Apenas alguns comentários rápidos positivos
Estou usando WinPython-64bit-3.4.4.1 com Mayavi 4.4.4 e funciona bem. Obrigado a todos os desenvolvedores!

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

@IVIUPPET ,
faz a solução alternativa mencionada aqui
https://github.com/enthought/mayavi/pull/250#issuecomment -207719214
corrigir o problema?

@solarjoe

Ainda não tentei, mas voltei aqui para postar meus resultados de trabalho para outros acompanharem, vindo de um background muito limitado em Python, mas com experiência em Matlab e C #.

Eu estava recebendo um erro de plataforma sem suporte que comentei e excluí imediatamente, porque estava tentando usar seu link (para Python 3.4) com Python 3.5
Mas agradeço sua resposta. Comente com minha configuração a seguir.

Eu instalei / estou usando o Anaconda para Python 3.5. Versão 3.19.1. Usei o pip 8.1.1. (não que qualquer um desses importe muito). 64 bits sempre que possível.

Então baixei:
1) VTK-7.0.0-cp35-cp35m-win_amd64.whl
De: http://www.lfd.uci.edu/~gohlke/pythonlibs/#vtk
python 3.5 versão de 64 bits do VTK, uma dependência crítica para Mayavi (Obrigado solarjoe!)

cd para downloadDir:
pip install VTK-7.0.0-cp35-cp35m-win_amd64.whl

Demorei um pouco para resolver a ausência de vcvarsall.bat, que foi o próximo problema que encontrei quando encontrei este segmento para fazer o VTK funcionar com o python 3.5. Tentei adicionar coisas a diferentes variáveis ​​de ambiente, instalando versões antigas do Visual Studio. Não funcionou. Acabou ficando apenas o Visual Studio Community 2015, que contém o compilador C ++ para Python 3.5. Eu sei, é um exagero, mas eu passei horas fazendo as outras coisas, então para mim esse foi o caminho de menor resistência (eu sou um EE). Durante a instalação, certifique-se de fazer "custom" e, em seguida, em "linguagens de programação", verifique tudo o que tem a ver com Python ou C ++.

2) pip install mayavi

Funcionou. Depois de um dia pesquisando no Google, finalmente tenho gráficos 3D que parecem corresponder ou exceder o Matlab! minha transição de Matlab para Python está completa: D

Enquanto eu estava lendo os comentários de @IVIUPPET acima, me lembrei de uma postagem no blog muito recente (11 de abril) da Microsoft chamada Como lidar com a dor de "não conseguir encontrar vcvarsall.bat" . Embora eu não tenha certeza, achei que essa postagem poderia ajudar.

Depois de instalar o Mayavi no Anaconda python 3.5 seguindo as instruções úteis do IVIUPPET, encontrei um obstáculo para realmente executá-lo.

Quando importo mayavi, recebo o seguinte erro de tempo de execução:
RuntimeError: Invalid Qt API 'pyqt5', valid values are: 'pyqt' or 'pyside'

O mayavi não roda em pyqt5 (que é o padrão do anaconda)? Em caso afirmativo, devo instalar o pyqt4 e como faço para nomear o pyqt4 como a API Qt?

@dreme Infelizmente eu ainda não implementei nenhum tipo de GUI ou preciso da API QT em meus programas, mas com base em folhear a documentação, parece que ainda há algum trabalho a ser feito para fazer a transição para QT5. Eu não ficaria surpreso se houver alguma incompatibilidade com mayavi, mas seu erro não parece sugerir isso para mim. Tente sem mayavi para isolar o problema ou contatar a ajuda relacionada ao QT, eu gostaria de ter uma GUI eventualmente quando eu deixar meu código para o meu laboratório assim que sair. Se você encontrou uma incompatibilidade com mayavi e, melhor ainda, uma solução, mantenha-nos informados!

Obrigado pela resposta IVIUPPET.

Acho que primeiro tentarei instalar o Qt4. Espero que não introduza conflitos de software desagradáveis ​​com o Qt5 do Anaconda

Além disso, ao compilar o VTK, você pode selecionar se deseja os widgets Qt4 ou Qt5 em tempo de compilação, eu acho.

Bem, eu tentei compilar o VTK da fonte (http://www.vtk.org/download/) usando as instruções em http://www.vtk.org/Wiki/VTK/Building/Windows

No entanto, não consegui ver nenhuma opção para especificar widgets Qt5 e o processo de compilação (usando o Microsoft Visual Studio Community 2015) falhou de qualquer maneira.

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

Você gostaria de ativar VTK_Group_Qt e, em seguida, definir VTK_QT_VERSION para 5 (o padrão é 4). Tenho desenvolvido e empacotado o Tomviz, que usa Qt 5 com VTK / ParaView há algum tempo. Funciona muito bem, existem alguns bugs que precisamos consertar. Também estamos criando com o Visual Studio 2015 no Windows há alguns meses.

Obrigado @cryos!

Não sou um programador C ++ e tenho quase zero de experiência em compilar programas, então, se você não se importa, tenho uma pergunta complementar.

Quando você diz "ligue VTK_Group_Qt e, em seguida, defina VTK_QT_VERSION para 5", o que exatamente você quer dizer? Eu vejo que os termos VTK_Group_Qt e VTK_QT_VERSION aparecer em um grande número de arquivos CMakeLists.txt, bem como nos arquivos vtkiOS.cmake, vtkAndroid.cmake, VTKConfig.cmake.in e vtkQt.cmake.

A maneira mais fácil é usar cmake-gui e apontá-lo para o diretório de construção. Você gostaria de clicar em VTK_Group_Qt para marcar a caixa, clicar em Configurar e então VTK_QT_VERSION aparecerá como uma nova variável. Alternativamente, uma linha de comando CMake, como a seguinte, pode ser usada

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

Eles estão todos armazenados no CMakeCache.txt no diretório de construção, mas cmake-gui, linha de comando cmake etc podem ser usados ​​para manipulá-los. Você também precisaria ativar o empacotamento do Python da mesma maneira. Espero que isso torne tudo mais claro.

@dreme Tem certeza que deseja compilar o VTK para usar o Qt5? Mayavi / ETS suporta apenas Qt4 (ou WX): https://github.com/enthought/mayavi/issues/450 . Desculpe se estou faltando alguma coisa ...

Obrigado pela sua paciência @cryos. Não percebi que um programa cmake-gui também é fornecido quando o cmake é instalado.

OK, iniciei o cmake-gui e indiquei as pastas de origem (C: / MyProjects / VTK-src) e build (C: / MyProjects / VTK-bin).

No entanto, quando clico no botão Configure , recebo várias mensagens de erro (consulte o anexo).

Eu também não vejo o termo VTK_Group_Qt entre as variáveis ​​que estão listadas (ver foto em anexo).

cmakegui

Eu precisaria adicioná-lo com o botão Add Entry ?

Parece que não consegue encontrar os compiladores C ou C ++. Eles não estão lá porque está falhando muito cedo, você disse que estava usando o Visual Studio 2015, mas o gerador na captura de tela está dizendo Visual Studio 2017 (o que é realmente novo e eu evitaria por enquanto). Você provavelmente precisará excluir a árvore de compilação e começar novamente, mas selecione Visual Studio 2015.

Olá @jonathanrocher , meu objetivo final é executar mayavi no anaconda python 3.5, da mesma forma que @IVIUPPET parece ser capaz de fazer.

Seguindo suas instruções, consegui instalar o mayavi OK, mas quando tento importá-lo recebo o seguinte erro de tempo de execução:
RuntimeError: Invalid Qt API 'pyqt5', valid values are: 'pyqt' or 'pyside'

Então, eu pensei que talvez a solução fosse compilar o VTK para que ele usasse automaticamente o Qt5, que é a versão padrão do Qt fornecida com o Anaconda.

Mas, como você pode ver pelos comentários anteriores, estou me atrapalhando nessa tarefa ...

Existe uma maneira de fazer com que mayavi use o WX?

@dreme - Testei as seguintes instruções com conda para o pacote pysph (veja aqui ):

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

Se você tiver qualquer problema, por favor nos avise.

Olá @prabhuramachandran , obrigado por esse conselho, mas não pareceu funcionar para mim.

Quando eu entrei: conda install -c conda-forge matplotlib jupyter pyside

Recebi a seguinte mensagem de erro:

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.

Ele não parece gostar do python 3.5, então criei um novo env para o python 3.4, para o qual os dois comandos de instalação do conda realmente funcionaram, ou seja:

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

No entanto, quando tento importar mayavi em um notebok do jupyter, ainda recebo o mesmo erro de tempo de execução antigo:
RuntimeError: Invalid Qt API 'pyqt5', valid values are: 'pyqt' or 'pyside'

Ei @dreme , fiz a construção de mayavi no canal menpo .

Encontramos o mesmo problema. A solução para nós foi apenas forçar um downgrade em pyqt após a instalação,

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

Achei que o downgrade final funcionou bem com todo o resto, pelo menos tirado do canal anaconda padrão e do nosso próprio.

Na verdade, @scienceopen tem uma solução mais elegante se você estiver feliz em fazer um ambiente novo aqui https://github.com/enthought/mayavi/issues/448#issuecomment -258065329 (parece que você pode solicitar um env QT4 no get- ir)

Sim, usar um ambiente QT4 é o caminho a percorrer. Então você pode usar QT5 para trabalhos HiDPI não-Mayavi.

Grato pelo suporte ao Python 3; espero que leve menos de três anos para o suporte QT5

Além disso, como mencionei acima (https://github.com/enthought/mayavi/issues/84#issuecomment-205720564), se você estiver no Windows e não estiver vinculado ao Anaconda, é realmente fácil fazer o Mayavi funcionar com o WinPython.

Olá a todos, obrigado pela ajuda contínua com este problema. Realmente aprecio isso.

Tentei ambas as soluções oferecidas por @jabooth (desatualizando o pyqt e criando um novo env com as configurações python = 3 pyqt = 4), mas nenhuma funcionou. Ainda recebo o mesmo erro de tempo de execução quando tento importar o 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'

[Não sei se isso é significativo, mas estou executando meu código em um notebook Jupyter]

Eu realmente gosto da distribuição Python do Anaconda, mas estou chegando ao ponto em que estou desesperado para mudar para o WinPython (não que eu ache que seja necessariamente ruim) como @solarjoe sugeriu.

Nesse caso, @solarjoe , qual instalador você usou? WinPython 3.5.2.3Qt5 ou WinPython 3.5.2.3 ?

@dreme , estou supondo que depois que você fez

conda create -n oldqt python=3 pyqt=4

com o qual ativou esse ambiente (para Windows)

activate oldqt

ou para Mac / Linux

source activate oldqt

Você definiu a variável de ambiente QT_API algo? Consulte https://github.com/enthought/pyface/blob/master/pyface/qt/__init__.py para a lógica usada.

@dreme , estou supondo que depois que você fez

conda create -n oldqt python = 3 pyqt = 4
com o qual ativou esse ambiente (para Windows)

ativar oldqt

Sim, foi isso que eu fiz @scienceopen

Você definiu a variável de ambiente QT_API para algo? Consulte https://github.com/enthought/pyface/blob/master/pyface/qt/__init__.py para a lógica usada.

Não, tudo isso está sendo feito em uma instalação bem nova do anaconda 3.5

Mas acho que você pode estar certo sobre ter algo a ver com a variável QT_API . O notebook Jupyter tem uma configuração padrão para isso? Posso definir isso para algo que seja adequado para mayavi?

Você sempre pode tentar alterar a variável env. Duvido que Jupyter o mude, mas talvez algo mais. Você pode inspecionar o valor atual com:

echo %QT_API%

e mude com

set QT_API= pyqt

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

@dreme , estou usando uma versão mais antiga, WinPython-64bit-3.4.4.1 com Qt4 e 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

Você também pode tentar instalar o mayavi em http://www.lfd.uci.edu/~gohlke/pythonlibs/ , procure na página por Mayavi. Basta escolher as versões corretas.
Não tenho certeza se eles funcionam com a versão Qt5 do WinPython. Talvez você precise instalar http://www.lfd.uci.edu/~gohlke/pythonlibs/#pyqt4 então.

Você sempre pode tentar alterar a variável env. Duvido que Jupyter o mude, mas talvez algo mais. Você pode inspecionar o valor atual com:

echo% QT_API%
e mude com

definir QT_API = pyqt

Bem, isso está me deixando louco. Eu defini a variável de ambiente do Windows para QT_API para pyqt como @jenshnielsen aconselhou, e verifiquei duas vezes se ela tinha sido definida executando o comando SET .

Mas fmd, ainda recebo o mesmo erro de tempo de execução reclamando que a API Qt é pyqt5 . Verifiquei novamente em um terminal cmd e, com certeza, a variável de ambiente QT_API era pyqt.

Então, quando fechei o Anaconda Navigator e verifiquei novamente, a variável QT_API tinha simplesmente desaparecido!

MAS, quando reiniciei o navegador Anaconda e abri um notebook Jupyter no kernel "oldqt", recebo o mesmo erro de tempo de execução antigo reclamando sobre pyqt5

Quando você define, ele só tem efeito no shell cmd atual. Nenhum efeito em programas fora do shell ou em outros shells. Você pode pesquisar no Google como definir a variável env permanentemente nas janelas. Para testar, sugiro definir QT_API. No mesmo shell, abra o python e execute um exemplo simples de mlab, ou seja, Daqui http://docs.enthought.com/mayavi/mayavi/mlab.html#a -demo

Você também deve ser capaz de definir a variável env do python antes de importar mayavi. http://stackoverflow.com/questions/5971312/how-to-set-environment-variables-in-python

@dreme : tivemos um usuário com um problema semelhante para ver se sua resolução ajuda: https://github.com/menpo/menpo3d/issues/16

As instruções resultantes em nosso README podem ser mais fáceis de seguir:
https://github.com/menpo/menpo3d#visualizing -3d-objects

Parte-chave:

Se você estiver executando o Windows e receber este erro, tente:

`` `
definir QT_API = pyqt
definir ETS_TOOLKIT = qt4
`` ``

@jenshnielsen Tentei automatizar isso para que os usuários (do Menpo pelo menos) não precisassem se preocupar com isso, mas não consegui fazer funcionar: https://github.com/menpo/menpo3d/issues/22

Vou levantar uma questão separada para tentar discutir como melhorar a situação aqui.

Você também deve ser capaz de definir a variável env do python antes de importar mayavi. http://stackoverflow.com/questions/5971312/how-to-set-environment-variables-in-python

Bingo! Isso funcionou. Thx @jenshnielsen = :-)

Eu prefiro muito mais essa abordagem in-script em comparação a fazer uma configuração de sistema operacional para todo o sistema da variável de ambiente QT_API , pois ainda posso querer fazer o desenvolvimento pyqt5 em meu ambiente raiz do Anaconda.

Então, em resumo para qualquer pobre coitado como eu que está lutando para fazer o mayavi rodar no anaconda python 3.5, aqui está minha abordagem sugerida destilada do conselho útil nos comentários anteriores:

  1. Crie um novo env (oldqt) que é rebaixado para pyqt4 executando o seguinte comando no terminal env do anaconda root:
    conda create -n oldqt python=3 pyqt=4

  2. Mude para o ambiente recém-criado:
    activate oldqt para sistema operacional Windows
    source activate oldqt para Mac / Linux OS

  3. instale mayavi usando o instalador de pacote menpo:
    conda install -c menpo mayavi

  4. Use oldqt env para executar seus scripts python mayavi e inclua o snippet abaixo no início desses scripts para garantir que uma API QT válida para mayavi seja especificada:

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

VTK-7.0.0-cp34-cp34m-win_amd64.whl não está disponível em http://www.lfd.uci.edu/~gohlke/pythonlibs/#vtk , de onde posso obter VTK-7.0.0-cp34- cp34m-win_amd64.whl.

Ele estava disponível há uma semana, eu baixei. Ainda está no meu computador do escritório, posso enviar-lhe um link no
Segunda-feira (também para a versão correspondente do Mayavi).

Por que você não usa o Mayavi e o VTK mais recentes?

Envie o link para VTK-7.0.0-cp34-cp34m-win_amd64.whl. Obrigada.

O link abaixo deve ser válido por cerca de 30 dias.

VTK-7.0.0-cp34-cp34m-win_amd64.whl

http://ge.tt/8QvtGkl2

então ... aproximadamente onde fica isso? Tenho estado de olho nisso desde o início e é mais um daqueles projetos que simplesmente não parecem acontecer.

@nevion O que você quer dizer? Este é um problema fechado, e eu tenho mayavi trabalhando em Python 3.6 no Windows e também no Linux.

@mabl Não está realmente claro a partir da trilha de problemas que este era o caso, e as coisas geralmente são deixadas em um estado pouco claro em software científico com algo como qt support laggin. Entre isso e a distribuição anaconda que suporta apenas 2.7, pensei que ainda fosse o caso. Alguma ideia de por que o anaconda ainda suporta apenas 2.7?

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.

Acabei de instalar o Anaconda3 e tentei instalar o mayavi. Conseguiu:

(C: \ ProgramData \ Anaconda3) C: \ Usuários \ nort.ARP> conda install mayavi
Buscando metadados do pacote ...........
Resolvendo as especificações do pacote:.

UnsatisfiableError: As especificações a seguir foram consideradas em conflito:

  • mayavi -> apptools 4.2.0 -> python 2.7 *
  • python 3.6 *
    Use "informação conda"para ver as dependências de cada pacote.

Você olhou / tentou as instruções de 4 pontos acima de @dreme ?

Especificamente de @dreme

  1. Crie um novo env (oldqt) que é rebaixado para pyqt4 executando o seguinte comando no terminal env do anaconda root:

        conda create -n oldqt python=3.5 pyqt=4
    
  2. Mude para o ambiente recém-criado:

        activate oldqt #for Windows OS
        source activate #oldqt for Mac/linux OS
    
  3. instale mayavi usando o instalador de pacote menpo:

        conda install -c menpo mayavi
    
  4. Use o env oldqt para executar seus scripts python mayavi e inclua o snippet abaixo na parte superior desses scripts para garantir que uma API QT válida para mayavi seja especificada:

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

@jonathanrocher Não, é justo. Eu talvez estivesse interpretando mal a afirmação de que isso foi resolvido e simplesmente funcionou. Sim, instalou seguindo a receita.

Eu tentei as instruções de 4 pontos do
conda create -n oldqt python=3.5 pyqt=4 e funcionou.

sim está correto, Mayavi 4.5 requer Python 3.5 devido ao QT4

Portanto, posso obter mayavi trabalhando em Qt5 e Python 3.6 + VTK7.1 usando, por exemplo, conda install python=3.6.1 vtk>=7 -c clinicalgraphics , e usando alguns números de commit recentes de pyface , traits , e traitsui . Isso parece funcionar em OSX, Windows e Linux de acordo com nossos CIs.

No entanto, em máquinas OSX com suporte HiDPI, apenas 1/4 da área da tela é usada:

screen shot 2017-10-17 at 17 07 08

Isso é algo que pode ser consertado no nível Mayavi?

Parece que foi feito para fazer parte do VTK7.1:

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

Mas antes de olhar mais a fundo, pensei em perguntar caso outros tivessem ideias.

Uma opção (triste, mas encheria a janela) é esperar que VTK8 saia, então use QVTKOpenGLWidget, que você pode usar para desligar HiDPI:

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

Ou talvez HiDPI "simplesmente funcione" ao usar este widget.

Tentei as variáveis ​​de ambiente listadas aqui, mas elas não corrigem isso.

Olá @larsoner , há alguma notícia de que o vtk 8.1 está disponível?

Instalando vtk 8.1.0 conda install -c conda-forge vtk , o python foi rebaixado para 3.6.2 (e matplotlib para 2.1.0 entre outros).
Eu instalei o pyface 5.1.0, traits 4.6.0, traitsui 5.1.0, conda install -c conda-forge pyface traits traitsui
Eu tenho qt 5.6.2.

Instalando mayavi 4.5.0 do conda-forge conda install -c conda-forge mayavi ele reclama das dependências pyqt 4.* , python 3.6* e vtk 7.1.* .

Alguma sugestão para fazê-lo funcionar com os pacotes atuais ou, alternativamente, exatamente como você fez funcionar com Python3.6, Qt5 e VTK7.1? (Ainda existe a solução de @dreme para Python3.5 + Qt4) Obrigado.

Temos usado este arquivo de ambiente para CI por cerca de 6 meses no Linux, OSX e Windows com bom sucesso (além do material HiDPI):

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

Tem um monte de coisas que você não precisa. Os componentes críticos para Mayavi foram obter VTK7 de clinicalgraphics porque eles tinham uma versão 3.6 e fixá-los em alguns commits de pyface , traits e traitsui do GitHub em vez de usar lançamentos, pois as versões que suportam Qt5 ainda não foram lançadas.

Se o VTK8 estiver disponível no conda-forge, provavelmente poderia ser trocado com segurança, mas ainda não tentei. Vou tentar em algum momento e ver se corrige o problema HiDPI. Se você chegar antes de mim, me diga como foi!

@larsoner , @mpanighel - este é um problema com o VTK 7.x (a janela tendo apenas um quarto do tamanho) e funciona bem com o VTK 8.x. Fique ligado em uma maneira mais fácil de instalar o VTK em alguns dias.

Apenas para sua informação, eu empurrei rodas para VTK 8.1.0 no PyPI, veja aqui: http://prabhuramachandran.blogspot.in/2018/01/vtk-810-wheels-for-all-platforms-on-pypi.html

Incrível @prabhuramachandran !

Isso é ótimo @prabhuramachandran ! Obrigado!

Nestes dias eu segui suas últimas correções e tentei reproduzir sua configuração e teste mayavi em python3.6 / pyqt5 no Linux, mas sem sorte (certamente para meu conhecimento básico de python), provavelmente eu apenas perdi algum pacote óbvio. Pensei em postar mais informações em https://github.com/enthought/mayavi/issues/595 para ficar mais organizado.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

Kekushke picture Kekushke  ·  9Comentários

relyativist picture relyativist  ·  16Comentários

rpep picture rpep  ·  7Comentários

rahulporuri picture rahulporuri  ·  3Comentários

yassersouri picture yassersouri  ·  5Comentários