Mayavi: Python 3 支持

创建于 2013-10-04  ·  72评论  ·  资料来源: enthought/mayavi

有没有计划为 Mayavi 支持 Python 3?

Python 即将发布 Python 3.4。 我认为 Python 3 现在非常成熟,主要的第三方库(numpy、scipy、pandas、matplotlib 等)现在都支持它。

我也在慢慢地将我的所有项目转移到 Python 3。对于“小”项目来说,2to3 应用程序的任务非常简单。 有时您可能会与旧的 std 库发生冲突或与 unicode/string 流出现问题,但没什么不好...

我想移动 mayavi 和其他相关项目会更复杂一些,但在中期时间应该不会太难。

我不想为别人说话,但我认为很多人都在等待 mayavi 将他们的项目转移到 Python 3。

“请不要等到 Python 4 发布之后……”

:-)

干杯

最有用的评论

您还应该能够在导入 mayavi 之前从 python 设置 env 变量。 http://stackoverflow.com/questions/5971312/how-to-set-environment-variables-in-python

答对了! 这就是诀窍。 谢谢@jenshnielsen =:-)

与对QT_API环境变量进行系统范围的操作系统设置相比,我更喜欢这种脚本内方法,因为我可能仍然想在我的根 Anaconda 环境中进行 pyqt5 开发。

因此,总而言之,对于像我这样正在努力让 mayavi 在 anaconda python 3.5 上运行的可怜虫,这里是我从前面评论中的有用建议中提炼出来的建议方法:

  1. 通过在 anaconda root env 终端中运行以下命令,创建一个新的 env (oldqt),将其降级为 pyqt4:
    conda create -n oldqt python=3 pyqt=4

  2. 切换到新创建的环境:
    activate oldqt适用于 Windows 操作系统
    source activate oldqt用于 Mac/Linux 操作系统

  3. 使用 menpo 软件包安装程序安装 mayavi:
    conda install -c menpo mayavi

  4. 使用oldqt env 运行您的 python mayavi 脚本,并在这些脚本的顶部包含以下代码段,以确保为 mayavi 指定了有效的 QT API:

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

所有72条评论

@hadim Mayavi 在 Python 3 上的计划与在 Python 3 上可用的 VTK 相关联。实现这一目标的路线图尚不清楚。 请参阅http://www.vtk.org/Wiki/VTK/Python_Wrapping_FAQ。

:+1:

:+1:

:+1:

我不认为 :thumbsup: 这里已经没有什么好处了。 您应该尝试说服 Kitware 在 VTK 中支持 python3。 没有它,就没有机会获得 Mayavi 的 python3 版本。

我不认为 :thumbsup: 这里已经没有什么好处了。 你应该尝试
说服 Kitware 在 VTK 中支持 python3。 没有它就没有
有机会获得 python3 版本的 Mayavi。

谢谢你强调!

也许您可以在 VTK 中提供有关将其移植到 Python 3 的正确错误报告的链接,以重定向用户在那里说 +1?

作为记录,我在 VTK 错误跟踪器上开了一张票: http ://www.vtk.org/Bug/view.php?

好消息! David Gobbi(VTK Python 绑定的维护者)已对该错误票做出回应,并表示他已经收到合并请求以准备 Py3 支持的绑定,并且他从本周末开始具体致力于 Py3 支持:
http://www.vtk.org/Bug/view.php?id=15554#c34787

我完全理解这只是这个过程的开始,可能还需要一段时间才能支持 Python 3 支持 VTK 的发布,但我想知道 Mayavi 是否可以积极做些什么来为 Python 3 做好准备? 我认为 Mayavi 代码库本身需要更改以支持 Python 3,是否值得开始讨论这项工作的内容?

谢谢@jabooth

据我所知,Mayavi 迁移到 Python 3 的全貌取决于支持 Python 3 的主要依赖项。当前状态是:

  • [] python vtk
  • [x] 特质
  • [x] 特质
  • [x] 皮脸
  • [ ] 设想

Python 3 VTK 绑定是主要部分,并且正在开展工作这一事实是个好消息,但是如果没有 VTK 稳定版本上可用的绑定,则在 Python 3 友好 Mayavi 上工作和测试将非常困难。

此外,Mayavi 本身在很大程度上依赖于traits、traitsui 和pyface,它们也需要支持python 3。虽然这些库中的工作正在进行中,但尚不支持。

_尽管如此_,我们现在可以做的(并且@dmsurti已经开始)是修复未决错误,提高测试覆盖率并简化 Mayavi 代码库,以便当 Python 3 中的依赖项可用时,将 Mayavi 移至 Python 3 的努力将是较少的。

您还可以执行诸如切换到“从未来导入
打印函数,除法”,去掉任何相关的导入,并切换
一切都到六点了。

我认为现在做任何事情都是浪费时间。 Mayavi 不会做太多一天工作无法修复的事情,更大的问题是 VTK 支持 Python 3,一旦可用,我们将进行必要的更改。 没有VTK,我们将无法进行测试。 我知道 David Gobbi 最近的工作,但我要等到它得到正式支持并合并到 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 已合并。 关闭。

只是一些快速的正面反馈
我正在使用带有 Mayavi 4.4.4 的 WinPython-64bit-3.4.4.1,它工作正常。 感谢所有开发者!

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

@IVIUPPET ,
此处提到的解决方法是否可行
https://github.com/enthought/mayavi/pull/250#issuecomment -207719214
解决问题?

@solarjoe

还没有尝试过,但我回到这里发布我的工作结果供其他人遵循,来自非常有限的 Python 背景,但有 Matlab 和 C# 的经验。

我收到了一个不受支持的平台错误,我对此进行了评论,然后立即将其删除,因为我试图将您的链接(对于 Python 3.4)与 Python 3.5 一起使用
但我很感激你的回复。 评论我的设置以遵循。

我为 Python 3.5 安装/正在使用 Anaconda。 版本 3.19.1。 我使用了 pip 8.1.1。 (并不是说这两个都很重要)。 尽可能使用 64 位。

然后我下载了:
1) VTK-7.0.0-cp35-cp35m-win_amd64.whl
来自: http :
python 3.5 64 位版本的 VTK,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,其中包含适用于 Python 3.5 的 C++ 编译器。 我知道,这有点矫枉过正,但我​​花了几个小时做其他事情,所以对我来说这是阻力最小的路径(我是 EE)。 在安装过程中,一定要进行“自定义”,然后在“编程语言”下,检查与 Python 或 C++ 相关的任何内容。

2)pip安装mayavi

有效。 经过一天的谷歌搜索,我终于有了似乎匹配或超过 Matlab 的 3D 图形! 我的 Matlab 到 Python 的转换完成了:D

当我阅读上面@IVIUPPET的评论时,我想起了微软最近(4 月 11 日)发布的一篇名为How to deal with the pain of "unable to find vcvarsall.bat" 的博客文章。 虽然我不确定,但我认为该帖子可能会有所帮助。

按照 IVIUPPET 的有用说明在 Anaconda python 3.5 中安装 Mayavi 后,我在实际运行它时遇到了障碍。

当我导入 mayavi 时,出现以下运行时错误:
RuntimeError: Invalid Qt API 'pyqt5', valid values are: 'pyqt' or 'pyside'

mayavi 是否不在 pyqt5 下运行(这是 anaconda 的默认设置)? 如果是这样,我应该安装 pyqt4 以及如何指定 pyqt4 作为 Qt API?

@dreme不幸的是,我还没有在我的程序中实现任何类型的 GUI 或需要 QT API,但基于浏览文档,似乎仍有一些工作要做才能过渡到 QT5。 如果与 mayavi 存在某些不兼容,我不会感到惊讶,但您的错误似乎并未向我暗示这一点。 尝试不使用 mayavi 来隔离问题或联系与 QT 相关的帮助,我希望在离开后将代码留给实验室时最终拥有一个 GUI。 如果您发现与 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 已经有一段时间了。 它工作得很好,有一些错误我们需要修复。 我们还在 Windows 上使用 Visual Studio 2015 进行构建,并且已经有几个月了。

谢谢@cryos!

我不是 C++ 程序员,在编译程序方面的经验几乎为零,所以如果你不介意我有一个后续问题。

当您说“打开 VTK_Group_Qt,然后将 VTK_QT_VERSION 设置为 5”时,您到底什么意思? 我看到VTK_Group_QtVTK_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 :

感谢您的耐心@cryos。 没想到安装cmake时还提供了cmake-gui程序。

好的,所以我已经启动了 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 ,我的最终目标是在anaconda python 3.5 下运行mayavi,就像@IVIUPPET似乎能够做到的那样。

按照他的指示,我设法安装了 mayavi,但是当我尝试导入它时,出现以下运行时错误:
RuntimeError: Invalid Qt API 'pyqt5', valid values are: 'pyqt' or 'pyside'

所以,我想也许解决方案是编译 VTK,以便它自动使用 Qt5,这是 Anaconda 附带的默认 Qt 版本。

但是正如您从前面的评论中看到的那样,我在这项任务中挣扎......

有没有办法让mayavi改用WX?

@dreme——我用这里):

$ 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,所以我为 python 3.4 创建了一个新的 env,这两个 conda install 命令确实有效,即:

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

但是,当我尝试在 jupyter 笔记本中导入 mayavi 时,我仍然遇到相同的旧运行时错误:
RuntimeError: Invalid Qt API 'pyqt5', valid values are: 'pyqt' or 'pyside'

@dreme ,我在menpo频道上制作了mayavi版本。

我们遇到了同样的问题。 我们的解决方案只是在安装后强制降级pyqt ,所以

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

我发现最终的降级与其他一切都很好,至少来自标准的 anaconda 频道和我们自己的频道。

实际上, @scienceopen有一个更优雅的解决方案,如果你很高兴在这里创建一个新的 env https://github.com/enthought/mayavi/issues/448#issuecomment -258065329(结果你可以从 get-走)

是的,使用 QT4 env是要走的路。 然后您可以使用 QT5 进行 HiDPI 非 Mayavi 工作。

感谢 Python 3 的支持; 希望 QT5 支持需要不到三年的时间

此外,正如我上面提到的 (https://github.com/enthought/mayavi/issues/84#issuecomment-205720564),如果您使用的是 Windows 并且没有绑定到 Anaconda,那么让 Mayavi 与 WinPython 一起工作真的很容易。

大家好,感谢您继续帮助解决这个问题。 真的很感激。

我尝试了@jabooth提供的两种解决方案(降级 pyqt,并使用 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/enthought/pyface/blob/master/pyface/qt/__init__.py

@dreme我假设你做了之后

conda create -n oldqt python=3 pyqt=4
您使用(对于 Windows)激活了该环境

激活oldqt

是的,这就是我所做的@scienceopen

你有没有设置 QT_API 环境变量? 有关使用的逻辑,请参阅https://github.com/enthought/pyface/blob/master/pyface/qt/__init__.py

不,这一切都是在全新安装的 anaconda 3.5 上完成的

但我认为你可能是对的,它与QT_API变量有关。 Jupyter 笔记本是否有默认设置? 我可以将它设置为对 mayavi 没问题的东西吗?

您可以随时尝试更改 env 变量。 我怀疑 Jupyter 会改变它,但也许是别的东西。 您可以使用以下命令检查当前值:

echo %QT_API%

并改变它

set QT_API= pyqt

在 Windows 上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 安装 mayavi

您也可以尝试从http://www.lfd.uci.edu/~gohlke/pythonlibs/安装 mayavi,搜索 Mayavi 页面。 只需选择正确的版本。
我不确定它们是否适用于 Qt5 版本的 WinPython。 也许你必须安装http://www.lfd.uci.edu/~gohlke/pythonlibs/#pyqt4然后。

您可以随时尝试更改 env 变量。 我怀疑 Jupyter 会改变它,但也许是别的东西。 您可以使用以下命令检查当前值:

回声%QT_API%
并改变它

设置 QT_API=pyqt

好吧,这简直让我发疯。 我按照@jenshnielsen 的建议将QT_API的 windows 环境变量设置为pyqt ,并通过运行SET命令仔细检查它是否已设置。

但是 fmd,我仍然遇到相同的旧运行时错误,抱怨 Qt API 是pyqt5 。 我在 cmd 终端中再次检查,果然 QT_API 环境变量是 pyqt。

然后当我关闭 Anaconda Navigator 并再次检查时,QT_API 变量完全消失了!

但是,当我重新启动 Anaconda navigator 并在“oldqt”内核下打开 Jupyter notebook 时,我收到了同样的旧运行时错误,抱怨 pyqt5

当您设置时,它仅在当前的 cmd shell 中生效。 对 shell 外或其他 shell 中的程序没有影响。 您可以谷歌如何从 Windows 永久设置环境变量。 为了测试,我建议设置 QT_API。 在同一个 shell 中打开 python 并运行一个简单的 mlab 示例,即从这里http://docs.enthought.com/mayavi/mayavi/mlab.html#a -demo

您还应该能够在导入 mayavi 之前从 python 设置 env 变量。 http://stackoverflow.com/questions/5971312/how-to-set-environment-variables-in-python

@dreme :我们有一个用户有类似的问题,看看他们的解决方案是否有帮助: https :

我们 README 中的结果说明可能更容易遵循:
https://github.com/menpo/menpo3d#visualizing -3d-objects

关键部分:

如果您正在运行 Windows 并收到此错误,请尝试:

``
设置 QT_API=pyqt
设置 ETS_TOOLKIT=qt4
````

@jenshnielsen我尝试将其自动化,以便用户(至少 Menpo 的用户)不必担心它,但我无法让它工作: https :

我将提出一个单独的问题来尝试讨论改善这里的情况。

您还应该能够在导入 mayavi 之前从 python 设置 env 变量。 http://stackoverflow.com/questions/5971312/how-to-set-environment-variables-in-python

答对了! 这就是诀窍。 谢谢@jenshnielsen =:-)

与对QT_API环境变量进行系统范围的操作系统设置相比,我更喜欢这种脚本内方法,因为我可能仍然想在我的根 Anaconda 环境中进行 pyqt5 开发。

因此,总而言之,对于像我这样正在努力让 mayavi 在 anaconda python 3.5 上运行的可怜虫,这里是我从前面评论中的有用建议中提炼出来的建议方法:

  1. 通过在 anaconda root env 终端中运行以下命令,创建一个新的 env (oldqt),将其降级为 pyqt4:
    conda create -n oldqt python=3 pyqt=4

  2. 切换到新创建的环境:
    activate oldqt适用于 Windows 操作系统
    source activate oldqt用于 Mac/Linux 操作系统

  3. 使用 menpo 软件包安装程序安装 mayavi:
    conda install -c menpo mayavi

  4. 使用oldqt env 运行您的 python mayavi 脚本,并在这些脚本的顶部包含以下代码段,以确保为 mayavi 指定了有效的 QT API:

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 在 Windows 和 Linux 上使用 Python 3.6。

@mabl从问题跟踪中并不清楚情况确实如此,而且在诸如 qt 支持滞后之类的科学软件中,事情往往处于不清楚的状态。 在这与仅支持 2.7 的 anaconda 发行版之间,我认为情况仍然如此。 知道为什么 anaconda 仍然只支持 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.

刚刚安装了Anaconda3并尝试安装mayavi。 得到了:

(C:\ProgramData\Anaconda3) C:\Users\nort.ARP>conda install mayavi
获取包元数据 .....................
解决封装规格: .

UnsatisfiableError:发现以下规范存在冲突:

  • mayavi -> apptools 4.2.0 -> python 2.7*
  • 蟒蛇 3.6*
    使用“conda 信息" 查看每个包的依赖关系。

您是否查看/尝试了@dreme上面的 4 点说明?

具体来自@dreme

  1. 通过在 anaconda root env 终端中运行以下命令,创建一个新的 env (oldqt),将其降级为 pyqt4:

        conda create -n oldqt python=3.5 pyqt=4
    
  2. 切换到新创建的环境:

        activate oldqt #for Windows OS
        source activate #oldqt for Mac/linux OS
    
  3. 使用 menpo 软件包安装程序安装 mayavi:

        conda install -c menpo mayavi
    
  4. 使用 oldqt env 运行您的 python mayavi 脚本,并在这些脚本的顶部包含以下代码段,以确保为 mayavi 指定了有效的 QT API:

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

@jonathanrocher不,足够公平。 我可能误读了这个问题已经解决并且可以正常工作的断言。 是的,它是按照配方安装的。

我刚刚尝试了@dreme 4 点指令,但在 python 3.6 中失败了。 我不得不强制 3.5:
conda create -n oldqt python=3.5 pyqt=4并且有效。

是的,没错,由于 QT4,Mayavi 4.5 需要 Python 3.5

因此,我可以使用例如conda install python=3.6.1 vtk>=7 -c clinicalgraphics以及使用pyfacetraits一些最近提交数字来让mayavi在 Qt5 和 Python 3.6 + VTK7.1 上工作,和traitsui 。 根据我们的 CI,这似乎适用于 OSX、Windows 和 Linux。

但是,在支持 HiDPI 的 OSX 机器上,仅使用 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。

从 conda-forge conda install -c conda-forge mayavi安装 mayavi 4.5.0 它抱怨依赖关系pyqt 4.*python 3.6*vtk 7.1.*

有什么建议让它与当前包一起工作,或者,你是如何让它与 Python3.6、Qt5 和 VTK7.1 一起工作的? (仍然有@dreme for Python3.5+Qt4 的解决方案)谢谢。

我们已经在 Linux、OSX 和 Windows 上将此环境文件用于 CI 大约 6 个月并取得了成功(HiDPI 除外):

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

它有一堆你不需要的东西。 Mayavi 的关键组件是从clinicalgraphics获取 VTK7,因为它们有3.6版本,并固定到pyfacetraitstraitsui一些提交来自 GitHub 的

如果 VTK8 在 conda-forge 上可用,它可能可以安全地换入,但我还没有尝试过。 我会在某个时候试一试,看看它是否修复了 HiDPI 的问题。 如果你打败了我,请告诉我进展如何!

@larsoner@mpanighel——这是 VTK 7.x 的一个问题(窗口只有四分之一大小)并且在 VTK 8.x 上工作正常。 请继续关注几天后安装 VTK 的更简单方法。

仅供参考,我已经在 PyPI 上为 VTK 8.1.0 推送了轮子,请参见此处: http :

太棒了@prabhuramachandran

太好了@prabhuramachandran ! 谢谢!

在这些日子里,我遵循了您的最新修复程序并尝试在 Linux 上的 python3.6/pyqt5 上重现您的设置和测试 mayavi,但没有运气(当然是因为我非常基本的 Python 知识),很可能我只是错过了一些明显的包。 我想在https://github.com/enthought/mayavi/issues/595 中发布更多信息以便更整洁。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

Kekushke picture Kekushke  ·  9评论

relyativist picture relyativist  ·  16评论

anntzer picture anntzer  ·  7评论

yassersouri picture yassersouri  ·  5评论

aestrivex picture aestrivex  ·  9评论