Mayavi: Поддержка Python 3

Созданный на 4 окт. 2013  ·  72Комментарии  ·  Источник: enthought/mayavi

Есть ли планы по поддержке Python 3 для Mayavi?

Python скоро выпустит Python 3.4. Я думаю, что Python 3 сейчас очень зрелый, и основная сторонняя библиотека (numpy, scipy, pandas, matplotlib и т.д.) теперь поддерживает его.

Я также постепенно перевожу весь свой проект на Python 3. Это довольно простая задача с приложением 2to3 для «небольшого» проекта. Иногда у вас может возникнуть конфликт со старыми библиотеками std или проблемы с потоком Unicode / string, но ничего плохого ...

Я думаю, будет немного сложнее перенести Mayavi и другие связанные проекты, но это не должно быть чем-то слишком сложным в среднесрочной перспективе.

Я не хочу говорить за других, но я думаю, что многие люди ждут от Mayavi перевода своих проектов на Python 3.

«Не ждите, пока выйдет Python 4, пожалуйста ...»

:-)

Ваше здоровье

Самый полезный комментарий

Вы также должны иметь возможность установить переменную env из python перед импортом mayavi. http://stackoverflow.com/questions/5971312/how-to-set-environment-variables-in-python

Бинго! Это помогло. Спасибо @jenshnielsen = :-)

Я предпочитаю этот подход в сценарии по сравнению с общесистемной настройкой переменной среды QT_API для всей системы, так как я все еще могу заниматься разработкой pyqt5 в своей корневой среде Anaconda.

Итак, в заключение для любого бедняги вроде меня, который изо всех сил пытается запустить Mayavi на anaconda python 3.5, вот мой предлагаемый подход, извлеченный из полезных советов в предыдущих комментариях:

  1. Создайте новый env (oldqt), который понижен до pyqt4, выполнив следующую команду в корневом терминале env anaconda:
    conda create -n oldqt python=3 pyqt=4

  2. Переключитесь на только что созданный env:
    activate oldqt для ОС Windows
    source activate oldqt для Mac / Linux OS

  3. установите mayavi с помощью установщика пакетов menpo:
    conda install -c menpo mayavi

  4. Используйте oldqt env для запуска ваших скриптов python mayavi и включите приведенный ниже фрагмент вверху этих скриптов, чтобы убедиться, что указан действительный QT API для mayavi:

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

Все 72 Комментарий

@hadim Планы по Mayavi на Python 3 связаны с тем, что VTK будет доступен на Python 3. Дорожная карта для этого неясна. См. Http://www.vtk.org/Wiki/VTK/Python_Wrapping_FAQ.

: +1:

: +1:

: +1:

Я не думаю, что: thumbsup: здесь больше ничего хорошего. Вам лучше попытаться убедить Kitware поддерживать python3 в VTK. Без этого у Mayavi нет никаких шансов на создание версии Mayavi на Python3.

Я не думаю, что: thumbsup: здесь больше ничего хорошего. Вам лучше попытаться
убедить Kitware поддерживать python3 в VTK. Без этого нет
шанс для версии Mayavi на python3.

Спасибо, что подчеркнули это!

Может быть, вы можете предоставить ссылку на соответствующий отчет об ошибке в VTK о переносе его на Python 3, чтобы перенаправить пользователей, говорящих там +1?

Для протокола я открыл тикет на трекере ошибок VTK: http://www.vtk.org/Bug/view.php?id=15554

Отличные новости! Дэвид Гобби (сопровождающий привязок VTK Python) ответил на эту ошибку и заявил, что он уже получил запросы на слияние, чтобы подготовить привязки для поддержки Py3, и он конкретно работает над поддержкой Py3, начиная с этих выходных:
http://www.vtk.org/Bug/view.php?id=15554#c34787

Я полностью понимаю, что это только начало процесса, и может пройти некоторое время, прежде чем поддержка Python 3 появится в выпуске VTK, но мне интересно, может ли Mayavi что-нибудь активно делать, чтобы подготовиться к Python 3? Я так понимаю, что для поддержки Python 3 потребуются изменения в самой кодовой базе Mayavi, стоит ли начинать обсуждение того, какой будет эта работа?

Спасибо @jabooth ,

Насколько я могу судить, полная картина перехода Mayavi на Python 3 зависит от основных зависимостей, поддерживающих python 3. Текущий статус:

  • [] питон vtk
  • [x] черты
  • [x] traitsui
  • [x] pyface
  • [] предусмотреть

Привязки Python 3 VTK являются основной частью, и тот факт, что идет работа, является хорошей новостью, но без привязок, доступных в стабильной версии VTK, было бы очень сложно работать и тестировать на Mayavi, совместимом с python 3.

Более того, сама Mayavi сильно зависит от трейтов, traitsui и pyface, которые также должны поддерживать python 3. Хотя работа над этими библиотеками еще не завершена, поддержки пока нет.

_Тем не менее_, что мы можем сделать в данный момент (и @dmsurti уже запущен) - это исправить ожидающие ошибки, улучшить охват тестирования и упростить кодовую базу Mayavi, чтобы, когда зависимости доступны в Python 3, усилия по перемещению Mayavi на Python 3 были меньше.

Вы также можете сделать такие вещи, как "переключиться на" из будущего импорта
print_function, Division ", избавьтесь от относительного импорта и переключения
все до шести.

Я считаю, что делать что-либо прямо сейчас - пустая трата времени. Mayavi не делает слишком много того, что не может быть исправлено за день работы, более серьезная проблема заключается в том, что VTK поддерживает Python 3, и как только это станет доступно, мы внесем необходимые изменения. Без ВТК мы не сможем протестировать. Мне известно о недавней работе Дэвида Гобби, но я собираюсь подождать, пока она официально не будет поддержана и объединена с VTK.

Похоже, ветка python-py3k была только что объединена: https://gitlab.kitware.com/vtk/vtk/merge_requests/478

Кто-нибудь знает статус tvtk? Если бы я мог наконец перейти на py3k в этом году, это было бы так здорово!

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

Дааааааааааааааааааааааа!

Есть ли в этом прогресс? Похоже, поддержка Python 3 будет в следующем второстепенном выпуске vtk 6.3.1.

См. №250

запрос на вытягивание № 250 объединен. Закрытие.

Просто быстрый положительный отзыв
Я использую WinPython-64bit-3.4.4.1 с 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

@IVIUPPET ,
упомянутый здесь обходной путь
https://github.com/enoughtt/mayavi/pull/250#issuecomment -207719214
решить проблему?

@solarjoe

H Не пробовал, но я вернулся сюда, чтобы опубликовать свои результаты работы для других, исходя из очень ограниченного опыта работы с Python, но имеющего опыт работы с Matlab и C #.

Я получал ошибку неподдерживаемой платформы, которую я прокомментировал, а затем сразу удалил, потому что я пытался использовать вашу ссылку (для Python 3.4) с Python 3.5.
Но я ценю ваш ответ. Прокомментируйте мои настройки, чтобы следовать.

Я установил / использую Anaconda для Python 3.5. Версия 3.19.1. Я использовал пип 8.1.1. (не то чтобы оба эти значения имели большое значение). 64 бит, когда это возможно.

Затем я загрузил:
1) VTK-7.0.0-cp35-cp35m-win_amd64.whl
От: http://www.lfd.uci.edu/~gohlke/pythonlibs/#vtk
64-разрядная версия VTK на python 3.5, критическая зависимость для Mayavi (спасибо, solarjoe!)

cd для загрузки
pip установить VTK-7.0.0-cp35-cp35m-win_amd64.whl

Мне потребовалось немного времени, чтобы решить проблему отсутствия vcvarsall.bat, что было следующей проблемой, с которой я столкнулся, когда нашел этот поток, чтобы заставить VTK работать с python 3.5. Пытался добавить что-то в разные переменные среды, установив старые версии Visual Studio. Не сработало. Закончился только Visual Studio Community 2015, который содержит компилятор C ++ для Python 3.5. Я знаю, это перебор, но я часами занимался другими делами, так что для меня это был путь наименьшего сопротивления (я EE). Во время установки обязательно сделайте «custom», а затем в «языках программирования» отметьте все, что связано с Python или C ++.

2) pip install mayavi

Это сработало. После дня поиска в Google у меня наконец-то есть 3D-графики, которые, кажется, соответствуют или превосходят Matlab! мой переход с Matlab на Python завершен: D

Когда я читал комментарии @IVIUPPET выше, я вспомнил совсем недавнюю (11 апреля) запись в блоге Microsoft под названием « Как справиться с болью, связанной с« невозможностью найти vcvarsall.bat » . Хотя я не уверен, я подумал, что этот пост может помочь.

После установки Mayavi в Anaconda python 3.5 в соответствии с полезными инструкциями IVIUPPET я столкнулся с препятствием на пути к его запуску.

Когда я импортирую Mayavi, я получаю следующую ошибку времени выполнения:
RuntimeError: Invalid Qt API 'pyqt5', valid values are: 'pyqt' or 'pyside'

Mayavi не работает под pyqt5 (который используется по умолчанию для anaconda)? Если да, следует ли мне установить pyqt4 и как мне назначить pyqt4 в качестве Qt API?

@dreme К сожалению, я еще не реализовал какой-либо графический интерфейс или мне не нужен QT API в своих программах, но, судя по беглому просмотру документации, кажется, что еще предстоит проделать некоторую работу для перехода на QT5. Я не удивлюсь, если есть некоторая несовместимость с Mayavi, но ваша ошибка, похоже, не предполагает этого для меня. Попробуйте без Mayavi изолировать проблему или обратиться в службу поддержки, связанную с QT, я хотел бы иметь графический интерфейс в конечном итоге, когда я оставлю свой код для своей лаборатории, когда уйду. Если вы обнаружили несовместимость с Mayavi и, что еще лучше, решение, пожалуйста, сообщите нам!

Спасибо за ответ IVIUPPET.

Думаю, сначала я попробую установить Qt4. Надеюсь, это не приведет к неприятным программным конфликтам с Anaconda Qt5.

Кроме того, я думаю, при компиляции VTK вы можете выбрать, хотите ли вы видеть виджеты Qt4 или Qt5 во время компиляции.

Ну, я попытался скомпилировать VTK из исходников (http://www.vtk.org/download/), используя инструкции на http://www.vtk.org/Wiki/VTK/Building/Windows

Однако я не видел никакой опции для указания виджетов Qt5, и процесс компиляции (с использованием Microsoft Visual Studio Community 2015) в любом случае завершился неудачно.

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

Вы можете включить VTK_Group_Qt, а затем установить для VTK_QT_VERSION значение 5 (по умолчанию - 4). Я занимаюсь разработкой и упаковкой Tomviz, который уже довольно давно использует Qt 5 с VTK / ParaView. Он работает очень хорошо, есть некоторые ошибки, которые нужно исправить. Мы также работаем с Visual Studio 2015 для Windows уже несколько месяцев.

Спасибо, @cryos!

Я не программист на C ++ и почти не имею опыта компиляции программ, поэтому, если вы не возражаете, у меня есть дополнительный вопрос.

Когда вы говорите «включите VTK_Group_Qt, а затем установите VTK_QT_VERSION на 5», что именно вы имеете в виду? Я вижу, что термины VTK_Group_Qt и VTK_QT_VERSION встречаются во многих файлах CMakeLists.txt, а также в файлах vtkiOS.cmake, vtkAndroid.cmake, VTKConfig.cmake.in и vtkQt.cmake.

Самый простой способ - использовать cmake-gui и указать его в каталоге сборки. Вам нужно щелкнуть VTK_Group_Qt, чтобы установить флажок, щелкнуть «Настроить», и тогда VTK_QT_VERSION появится как новая переменная. В качестве альтернативы может использоваться командная строка CMake, такая как следующая

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

Все они хранятся в CMakeCache.txt в каталоге сборки, но для управления ими можно использовать cmake-gui, командную строку cmake и т. Д. Таким же образом вам также потребуется включить упаковку Python. Надеюсь, что это проясняет.

@dreme Вы уверены, что хотите скомпилировать VTK для использования Qt5? Mayavi / ETS поддерживает только Qt4 (или WX): https://github.com/enoughtt/mayavi/issues/450 . Извините, если я что-то упускаю ...

Спасибо за терпение @cryos. Я не знал, что программа cmake-gui также предоставляется при установке cmake.

Итак, я запустил cmake-gui и указал папки источника (C: / MyProjects / VTK-src) и сборки (C: / MyProjects / VTK-bin).

Однако, когда я нажимаю кнопку Configure , я получаю кучу сообщений об ошибках (см. Приложение).

Я также не вижу термин VTK_Group_Qt среди перечисленных переменных (см. Прилагаемый рисунок).

cmakegui

Нужно ли мне добавить его с помощью кнопки Add Entry ?

Похоже, он не может найти компиляторы C или C ++. Их там нет, потому что он очень рано дает сбой, вы сказали, что используете Visual Studio 2015, но генератор на скриншоте говорит, что Visual Studio 2017 (что действительно ново, и я бы пока избегал). Вероятно, вам нужно удалить дерево сборки и начать снова, но выберите Visual Studio 2015.

Привет, @jonathanrocher , моя конечная цель - запустить Mayavi под anaconda python 3.5, как и @IVIUPPET , похоже, может это сделать.

Следуя его инструкциям, мне удалось установить mayavi OK, но когда я пытаюсь импортировать его, я получаю следующую ошибку времени выполнения:
RuntimeError: Invalid Qt API 'pyqt5', valid values are: 'pyqt' or 'pyside'

Итак, я подумал, что, возможно, решение состоит в том, чтобы скомпилировать VTK, чтобы он автоматически использовал Qt5, который является версией Qt по умолчанию, поставляемой с Anaconda.

Но, как вы можете видеть из предыдущих комментариев, я запутался в этой задаче ...

Возможно, есть способ заставить Mayavi использовать WX вместо этого?

@dreme - я протестировал следующие инструкции с conda для пакета pysph (см. здесь ):

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

Если у вас возникнут проблемы, дайте нам знать.

Привет, @prabhuramachandran , спасибо за совет, но, похоже, у меня он не сработал.

Когда я вошел: conda install -c conda-forge matplotlib jupyter pyside

Я получил следующее сообщение об ошибке:

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.

Кажется, ему не нравится python 3.5, поэтому я создал новый env для python 3.4, для которого обе команды установки conda действительно работали, то есть:

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

Однако, когда я пытаюсь импортировать mayavi в jupyter notebok, я все равно получаю ту же старую ошибку времени выполнения:
RuntimeError: Invalid Qt API 'pyqt5', valid values are: 'pyqt' or 'pyside'

Привет, @dreme , я сделал mayavi на канале menpo .

Мы столкнулись с той же проблемой. Решением для нас было просто принудительно перейти на более раннюю версию pyqt после установки, поэтому

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

Я обнаружил, что окончательный переход на более раннюю версию отлично работает со всем остальным, по крайней мере, взятым из стандартного канала Anaconda и нашего собственного.

На самом деле, у @scienceopen есть более элегантное решение, если вы счастливы создать новый env здесь https://github.com/enoughtt/mayavi/issues/448#issuecomment -258065329 (оказывается, вы можете запросить env QT4 из get- идти)

Да, использование QT4 env - это правильный путь. Затем вы можете использовать QT5 для работы HiDPI, отличной от Mayavi.

Благодарен за поддержку Python 3; надеюсь, поддержка QT5 займет менее трех лет

Кроме того, как я упоминал выше (https://github.com/enoughtt/mayavi/issues/84#issuecomment-205720564), если вы работаете в Windows и не привязаны к Anaconda, очень легко заставить Mayavi работать с WinPython.

Привет всем, спасибо за вашу постоянную помощь в решении этой проблемы. Действительно ценю это.

Я попробовал оба решения, предлагаемые @jabooth (понижение версии pyqt и создание нового env с настройками python = 3 pyqt = 4), но ни одно из них не сработало. Я все еще получаю ту же чертову ошибку времени выполнения, когда пытаюсь импортировать 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'

[Не знаю, важно ли это, но я запускаю свой код в записной книжке Jupyter]

Мне очень нравится дистрибутив Anaconda python, но я подхожу к тому моменту, когда я в отчаянии готов перейти на WinPython (не то чтобы я думаю, что это обязательно плохо), как предложил @solarjoe .

В этом случае @solarjoe , какой установщик вы использовали? WinPython 3.5.2.3Qt5 или WinPython 3.5.2.3 ?

@dreme Полагаю, после того, как ты это сделал

conda create -n oldqt python=3 pyqt=4

что вы активировали эту среду (для Windows)

activate oldqt

или для Mac / Linux

source activate oldqt

Вы установили что-то для переменной окружения QT_API ? См. Https://github.com/enoughtt/pyface/blob/master/pyface/qt/__init__.py для используемой логики.

@dreme Полагаю, после того, как ты это сделал

conda create -n oldqt python = 3 pyqt = 4
что вы активировали эту среду (для Windows)

активировать oldqt

Ага, вот что я сделал @scienceopen

Вы установили что-то для переменной окружения QT_API? См. Https://github.com/enoughtt/pyface/blob/master/pyface/qt/__init__.py для используемой логики.

Нет, все это делается на довольно свежей установке anaconda 3.5

Но я думаю, что вы правы, говоря, что это как-то связано с переменной QT_API . Есть ли в ноутбуке Jupyter настройки по умолчанию для этого? Могу ли я, возможно, настроить это на что-то, что подойдет для Mayavi?

Вы всегда можете попробовать изменить переменную env. Я сомневаюсь, что Jupyter это изменит, но, возможно, что-то еще. Вы можете проверить текущее значение с помощью:

echo %QT_API%

и измените это с помощью

set QT_API= pyqt

в окнах http://superuser.com/questions/79612/setting-and-getting-windows-environment-variables-from-the-command-prompt

@dreme , я использую старую версию WinPython-64bit-3.4.4.1 с Qt4 и 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

Вы также можете попробовать установить Mayavi с http://www.lfd.uci.edu/~gohlke/pythonlibs/ , найдите на странице Mayavi. Просто выберите правильные версии.
Я не уверен, работают ли они с версией WinPython для Qt5. Возможно, тогда вам придется установить http://www.lfd.uci.edu/~gohlke/pythonlibs/#pyqt4 .

Вы всегда можете попробовать изменить переменную env. Я сомневаюсь, что Jupyter это изменит, но, возможно, что-то еще. Вы можете проверить текущее значение с помощью:

эхо% QT_API%
и измените это с помощью

установить QT_API = pyqt

Ну, это просто сводит меня с ума. Я установил переменную среды Windows для QT_API в pyqt, как посоветовал @jenshnielsen , и дважды проверил, что она была установлена, выполнив команду SET .

Но fmd, я все еще получаю ту же старую ошибку времени выполнения, жалуюсь, что Qt API - это pyqt5 . Я снова проверил в терминале cmd, и, конечно же, переменная окружения QT_API была pyqt.

Затем, когда я закрыл Anaconda Navigator и снова проверил, переменная QT_API просто исчезла совсем!

НО, когда я перезапустил навигатор Anaconda и открыл записную книжку Jupyter под ядром "oldqt", я получил ту же самую старую ошибку времени выполнения с жалобой на pyqt5

Когда вы устанавливаете ude, он действует только в текущей оболочке cmd. Не влияет на программы вне оболочки или в других оболочках. Вы можете погуглить, как установить переменную env постоянно из окон. Для тестирования я бы предложил установить QT_API. В той же оболочке откройте python и запустите простой пример mlab, т.е. Отсюда http://docs.enoughtt.com/mayavi/mayavi/mlab.html#a -demo

Вы также должны иметь возможность установить переменную env из python перед импортом mayavi. http://stackoverflow.com/questions/5971312/how-to-set-environment-variables-in-python

@dreme : у нас был пользователь с аналогичной проблемой, чтобы посмотреть, помогает ли их решение: https://github.com/menpo/menpo3d/issues/16

Возможно, будет проще следовать инструкциям в нашем README:
https://github.com/menpo/menpo3d#visualizing -3d-объекты

Часть ключа:

Если вы работаете в Windows и получаете эту ошибку, попробуйте:

`` ''
установить QT_API = pyqt
установить ETS_TOOLKIT = qt4
`` ''

@jenshnielsen Я попытался автоматизировать это, чтобы пользователям (по крайней мере, Menpo) не приходилось беспокоиться об этом, но я не мог заставить его работать: https://github.com/menpo/menpo3d/issues/22

Я собираюсь поднять отдельный вопрос, чтобы попытаться обсудить улучшение ситуации здесь.

Вы также должны иметь возможность установить переменную env из python перед импортом mayavi. http://stackoverflow.com/questions/5971312/how-to-set-environment-variables-in-python

Бинго! Это помогло. Спасибо @jenshnielsen = :-)

Я предпочитаю этот подход в сценарии по сравнению с общесистемной настройкой переменной среды QT_API для всей системы, так как я все еще могу заниматься разработкой pyqt5 в своей корневой среде Anaconda.

Итак, в заключение для любого бедняги вроде меня, который изо всех сил пытается запустить Mayavi на anaconda python 3.5, вот мой предлагаемый подход, извлеченный из полезных советов в предыдущих комментариях:

  1. Создайте новый env (oldqt), который понижен до pyqt4, выполнив следующую команду в корневом терминале env anaconda:
    conda create -n oldqt python=3 pyqt=4

  2. Переключитесь на только что созданный env:
    activate oldqt для ОС Windows
    source activate oldqt для Mac / Linux OS

  3. установите mayavi с помощью установщика пакетов menpo:
    conda install -c menpo mayavi

  4. Используйте oldqt env для запуска ваших скриптов python mayavi и включите приведенный ниже фрагмент вверху этих скриптов, чтобы убедиться, что указан действительный QT API для mayavi:

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

VTK-7.0.0-cp34-cp34m-win_amd64.whl недоступен по адресу http://www.lfd.uci.edu/~gohlke/pythonlibs/#vtk , откуда я могу получить VTK-7.0.0-cp34- cp34m-win_amd64.whl.

Он был доступен неделю назад, я его скачал. Он все еще находится на моем офисном компьютере, я могу отправить вам ссылку на
Понедельник (также для соответствующей версии Mayavi).

Почему бы вам не использовать более новые Mayavi и VTK?

Отправьте ссылку на VTK-7.0.0-cp34-cp34m-win_amd64.whl. Спасибо.

Ссылка ниже должна быть действительна около 30 дней.

VTK-7.0.0-cp34-cp34m-win_amd64.whl

http://ge.tt/8QvtGkl2

так ... примерно где это? Я слежу за этим с самого начала, и это еще один из тех проектов, с которыми, кажется, просто не получается.

@nevion Что ты имеешь в виду? Это закрытая проблема, и у меня mayavi работает над Python 3.6 как в Windows, так и в Linux.

@mabl Из

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.

Только что установил Anaconda3 и попытался установить Mayavi. Есть:

(C: \ ProgramData \ Anaconda3) C: \ Users \ nort.ARP> conda установить mayavi
Получение метаданных пакета ...........
Спецификации решающего пакета:.

UnsatisfiableError: следующие спецификации противоречат друг другу:

  • mayavi -> apptools 4.2.0 -> python 2.7 *
  • Python 3.6 *
    Используйте "conda info"", чтобы увидеть зависимости для каждого пакета.

Вы смотрели / пробовали приведенные выше инструкции из 4 пунктов от @dreme ?

Конкретно из @dreme

  1. Создайте новый env (oldqt), который понижен до pyqt4, выполнив следующую команду в корневом терминале env anaconda:

        conda create -n oldqt python=3.5 pyqt=4
    
  2. Переключитесь на только что созданный env:

        activate oldqt #for Windows OS
        source activate #oldqt for Mac/linux OS
    
  3. установите mayavi с помощью установщика пакетов menpo:

        conda install -c menpo mayavi
    
  4. Используйте oldqt env для запуска ваших скриптов python mayavi и включите приведенный ниже фрагмент вверху этих скриптов, чтобы убедиться, что указан действительный QT API для mayavi:

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

@jonathanrocher Нет, честно. Возможно, я неправильно истолковал утверждение, что это было решено и просто сработало. Да, установил по рецепту.

Я просто попробовал 4-точечные инструкции @dreme, и это не удалось с python 3.6. Пришлось форсировать 3.5:
conda create -n oldqt python=3.5 pyqt=4 и это сработало.

да, правильно, Mayavi 4.5 требует Python 3.5 из-за QT4

Итак, я могу получить mayavi работающий над Qt5 и Python 3.6 + VTK7.1, используя, например, conda install python=3.6.1 vtk>=7 -c clinicalgraphics , и используя некоторые недавние номера коммитов из pyface , traits , и traitsui . Судя по нашим CI, это работает в OSX, Windows и Linux.

Однако на машинах OSX с поддержкой HiDPI используется только 1/4 площади экрана:

screen shot 2017-10-17 at 17 07 08

Можно ли это исправить на уровне Mayavi?

Похоже, это могло быть частью VTK7.1:

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

Но прежде чем заглянуть глубже, я подумал, что спрошу, есть ли идеи у других.

Один из вариантов (печально, но заполнит окно) - дождаться выхода VTK8, а затем использовать QVTKOpenGLWidget, который можно использовать для выключения HiDPI:

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

А может HiDPI будет «просто работать» при использовании этого виджета.

Я пробовал перечисленные здесь переменные среды, но они не исправляют.

Привет, @larsoner , есть какие-нибудь новости о доступности vtk 8.1?

При установке vtk 8.1.0 conda install -c conda-forge vtk версия python понижается до 3.6.2 (а matplotlib - до 2.1.0 между другими).
Я установил pyface 5.1.0, traits 4.6.0, traitsui 5.1.0, conda install -c conda-forge pyface traits traitsui
У меня qt 5.6.2.

При установке mayavi 4.5.0 из conda-forge conda install -c conda-forge mayavi он жалуется на зависимости pyqt 4.* , python 3.6* и vtk 7.1.* .

Есть ли предложения, чтобы он работал с текущими пакетами или, альтернативно, как именно вы заставили его работать с Python3.6, Qt5 и VTK7.1? (Тем не менее, есть решение от @dreme для Python3.5 + Qt4) Спасибо.

Мы с успехом использовали этот файл среды для CI около 6 месяцев в Linux, OSX и Windows (кроме HiDPI):

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

В нем есть много вещей, которые вам не нужны. Критически важные компоненты для Mayavi получали VTK7 из clinicalgraphics потому что у них была версия 3.6 , и закреплялись за некоторыми коммитами pyface , traits и traitsui от GitHub вместо использования релизов, поскольку версии с поддержкой Qt5 еще не выпущены.

Если VTK8 доступен на conda-forge, его, вероятно, можно безопасно заменить, но я еще не пробовал. Я попробую в какой-то момент и посмотрю, исправит ли он материал HiDPI. Если вы меня опередите, дайте мне знать, как это происходит!

@larsoner , @mpanighel - это проблема с VTK 7.x (размер окна составляет всего четверть) и отлично работает с VTK 8.x. Следите за обновлениями, чтобы узнать, как проще всего установить VTK за несколько дней.

К вашему сведению, я подтолкнул колеса для VTK 8.1.0 на PyPI, см. Здесь: http://prabhuramachandran.blogspot.in/2018/01/vtk-810-wheels-for-all-platforms-on-pypi.html

Потрясающе @prabhuramachandran !

Это здорово, @prabhuramachandran ! Спасибо!

В эти дни я следил за вашими последними исправлениями и пытался воспроизвести вашу настройку и протестировать mayavi на python3.6 / pyqt5 в Linux, но безуспешно (конечно, для моих очень базовых знаний о python), скорее всего, мне просто не хватало какого-то очевидного пакета. Я решил опубликовать дополнительную информацию на https://github.com/enoughtt/mayavi/issues/595, чтобы быть более аккуратным.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

rambalachandran picture rambalachandran  ·  9Комментарии

thoth291 picture thoth291  ·  10Комментарии

PennyQ picture PennyQ  ·  4Комментарии

dnacombo picture dnacombo  ·  7Комментарии

indranilsinharoy picture indranilsinharoy  ·  9Комментарии