Есть ли планы по поддержке 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, пожалуйста ...»
:-)
Ваше здоровье
@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. Текущий статус:
Привязки 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 среди перечисленных переменных (см. Прилагаемый рисунок).
Нужно ли мне добавить его с помощью кнопки 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
@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, вот мой предлагаемый подход, извлеченный из полезных советов в предыдущих комментариях:
Создайте новый env (oldqt), который понижен до pyqt4, выполнив следующую команду в корневом терминале env anaconda:
conda create -n oldqt python=3 pyqt=4
Переключитесь на только что созданный env:
activate oldqt
для ОС Windows
source activate oldqt
для Mac / Linux OS
установите mayavi с помощью установщика пакетов menpo:
conda install -c menpo mayavi
Используйте 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
так ... примерно где это? Я слежу за этим с самого начала, и это еще один из тех проектов, с которыми, кажется, просто не получается.
@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
Создайте новый env (oldqt), который понижен до pyqt4, выполнив следующую команду в корневом терминале env anaconda:
conda create -n oldqt python=3.5 pyqt=4
Переключитесь на только что созданный env:
activate oldqt #for Windows OS
source activate #oldqt for Mac/linux OS
установите mayavi с помощью установщика пакетов menpo:
conda install -c menpo mayavi
Используйте 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 площади экрана:
Можно ли это исправить на уровне 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, чтобы быть более аккуратным.
Самый полезный комментарий
Бинго! Это помогло. Спасибо @jenshnielsen = :-)
Я предпочитаю этот подход в сценарии по сравнению с общесистемной настройкой переменной среды
QT_API
для всей системы, так как я все еще могу заниматься разработкой pyqt5 в своей корневой среде Anaconda.Итак, в заключение для любого бедняги вроде меня, который изо всех сил пытается запустить Mayavi на anaconda python 3.5, вот мой предлагаемый подход, извлеченный из полезных советов в предыдущих комментариях:
Создайте новый env (oldqt), который понижен до pyqt4, выполнив следующую команду в корневом терминале env anaconda:
conda create -n oldqt python=3 pyqt=4
Переключитесь на только что созданный env:
activate oldqt
для ОС Windowssource activate oldqt
для Mac / Linux OSустановите mayavi с помощью установщика пакетов menpo:
conda install -c menpo mayavi
Используйте
oldqt
env для запуска ваших скриптов python mayavi и включите приведенный ниже фрагмент вверху этих скриптов, чтобы убедиться, что указан действительный QT API для mayavi: