首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在windows上: Python编辑器不能从mayavi导入mlab,命令提示符可以

在windows上: Python编辑器不能从mayavi导入mlab,命令提示符可以
EN

Stack Overflow用户
提问于 2016-01-19 13:21:19
回答 1查看 417关注 0票数 0

我是Python新手,但我在Windows上使用mayavi包时遇到了一些困难。我已经安装了Python(x,y),我使用的是崇高文本2和Spyder编辑器。到目前为止,我发现在mayavi网站上运行这个代码:

代码语言:javascript
复制
from numpy import pi, sin, cos, mgrid
dphi, dtheta = pi/250.0, pi/250.0
[phi,theta] = mgrid[0:pi+dphi*1.5:dphi,0:2*pi+dtheta*1.5:dtheta]
m0 = 4; m1 = 3; m2 = 2; m3 = 3; m4 = 6; m5 = 2; m6 = 6; m7 = 4;
r = sin(m0*phi)**m1 + cos(m2*phi)**m3 + sin(m4*theta)**m5 + cos(m6*theta)**m7
x = r*sin(phi)*cos(theta)
y = r*cos(phi)
z = r*sin(phi)*sin(theta)
# View it.
from mayavi import mlab
s = mlab.mesh(x, y, z)
mlab.show()

结果出现以下错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "C:\Dropbox\...\test.py", line 23, in <module>
    from mayavi import mlab
  File "C:\Python27\lib\site-packages\mayavi\mlab.py", line 27, in <module>
    from mayavi.tools.camera import view, roll, yaw, pitch, move
  File "C:\Python27\lib\site-packages\mayavi\tools\camera.py", line 25, in <module>
    from engine_manager import get_engine
  File "C:\Python27\lib\site-packages\mayavi\tools\engine_manager.py", line 12, in <module>
    from mayavi.preferences.api import preference_manager
  File "C:\Python27\lib\site-packages\mayavi\preferences\api.py", line 4, in <module>
    from preference_manager import preference_manager
  File "C:\Python27\lib\site-packages\mayavi\preferences\preference_manager.py", line 29, in <module>
    from traitsui.api import View, Group, Item
  File "C:\Python27\lib\site-packages\traitsui\api.py", line 36, in <module>
    from .editors.api import ArrayEditor
  File "C:\Python27\lib\site-packages\traitsui\editors\__init__.py", line 23, in <module>
    from .api import ArrayEditor
  File "C:\Python27\lib\site-packages\traitsui\editors\api.py", line 24, in <module>
    from .code_editor import CodeEditor
  File "C:\Python27\lib\site-packages\traitsui\editors\code_editor.py", line 36, in <module>
    class ToolkitEditorFactory ( EditorFactory ):
  File "C:\Python27\lib\site-packages\traitsui\editors\code_editor.py", line 48, in ToolkitEditorFactory
    mark_color = Color( 0xECE9D8 )
  File "C:\Python27\lib\site-packages\traits\traits.py", line 489, in __call__
    return self.maker_function( *args, **metadata )
  File "C:\Python27\lib\site-packages\traits\traits.py", line 1203, in Color
    return ColorTrait( *args, **metadata )
  File "C:\Python27\lib\site-packages\traitsui\toolkit_traits.py", line 7, in ColorTrait
    return toolkit().color_trait( *args, **traits )
  File "C:\Python27\lib\site-packages\traitsui\toolkit.py", line 122, in toolkit
    _toolkit = _import_toolkit( toolkit_name )
  File "C:\Python27\lib\site-packages\traitsui\toolkit.py", line 51, in _import_toolkit
    return __import__( name, globals=globals(), level=1 ).toolkit
  File "C:\Python27\lib\site-packages\traitsui\wx\__init__.py", line 26, in <module>
    import toolkit
  File "C:\Python27\lib\site-packages\traitsui\wx\toolkit.py", line 61, in <module>
    from helper \
  File "C:\Python27\lib\site-packages\traitsui\wx\helper.py", line 43, in <module>
    from pyface.timer.api \
  File "C:\Python27\lib\site-packages\pyface\timer\api.py", line 17, in <module>
    from .timer import Timer
  File "C:\Python27\lib\site-packages\pyface\timer\timer.py", line 8, in <module>
    from pyface.toolkit import toolkit_object
  File "C:\Python27\lib\site-packages\pyface\toolkit.py", line 73, in <module>
    _init_toolkit()
  File "C:\Python27\lib\site-packages\pyface\toolkit.py", line 45, in _init_toolkit
    be = import_toolkit(tk)
  File "C:\Python27\lib\site-packages\pyface\toolkit.py", line 31, in import_toolkit
    __import__(be + 'init')
  File "C:\Python27\lib\site-packages\pyface\ui\qt4\init.py", line 18, in <module>
    from pyface.qt import QtCore, QtGui, qt_api
  File "C:\Python27\lib\site-packages\pyface\qt\__init__.py", line 33, in <module>
    prepare_pyqt4()
  File "C:\Python27\lib\site-packages\pyface\qt\__init__.py", line 17, in prepare_pyqt4
    sip.setapi('QDate', 2)
ValueError: API 'QDate' has already been set to version 1
[Finished in 1.5s with exit code 1]

奇怪的是,当在命令提示符中直接运行mayavi代码时,它确实有效!那么,为什么我在崇高文本2和Spyder中都会出现错误呢?

谢谢你抽出时间来看我的问题

编辑:当完全导入numpy而不是pi、sin、cos和mgrid命令时:错误更改为:

代码语言:javascript
复制
Traceback (most recent call last):
  File "C:\Dropbox\Mijn documenten\CiTG\CIE5 - MSc Thesis\Python_TopOpPy_Christopher\testy.py", line 24, in <module>
    from mayavi import mlab
  File "C:\Python27\lib\site-packages\mayavi\mlab.py", line 27, in <module>
    from mayavi.tools.camera import view, roll, yaw, pitch, move
  File "C:\Python27\lib\site-packages\mayavi\tools\camera.py", line 25, in <module>
    from engine_manager import get_engine
  File "C:\Python27\lib\site-packages\mayavi\tools\engine_manager.py", line 12, in <module>
    from mayavi.preferences.api import preference_manager
  File "C:\Python27\lib\site-packages\mayavi\preferences\api.py", line 4, in <module>
    from preference_manager import preference_manager
  File "C:\Python27\lib\site-packages\mayavi\preferences\preference_manager.py", line 29, in <module>
    from traitsui.api import View, Group, Item
  File "C:\Python27\lib\site-packages\traitsui\api.py", line 36, in <module>
    from .editors.api import ArrayEditor
  File "C:\Python27\lib\site-packages\traitsui\editors\__init__.py", line 23, in <module>
    from .api import ArrayEditor
  File "C:\Python27\lib\site-packages\traitsui\editors\api.py", line 24, in <module>
    from .code_editor import CodeEditor
  File "C:\Python27\lib\site-packages\traitsui\editors\code_editor.py", line 36, in <module>
    class ToolkitEditorFactory ( EditorFactory ):
  File "C:\Python27\lib\site-packages\traitsui\editors\code_editor.py", line 48, in ToolkitEditorFactory
    mark_color = Color( 0xECE9D8 )
  File "C:\Python27\lib\site-packages\traits\traits.py", line 489, in __call__
    return self.maker_function( *args, **metadata )
  File "C:\Python27\lib\site-packages\traits\traits.py", line 1203, in Color
    return ColorTrait( *args, **metadata )
  File "C:\Python27\lib\site-packages\traitsui\toolkit_traits.py", line 7, in ColorTrait
    return toolkit().color_trait( *args, **traits )
  File "C:\Python27\lib\site-packages\traitsui\toolkit.py", line 125, in toolkit
    ETSConfig.toolkit = toolkit_name
  File "C:\Python27\lib\site-packages\traits\etsconfig\etsconfig.py", line 213, in _set_toolkit
    "already been set to %s" % (toolkit, self._toolkit)
ValueError: cannot set toolkit to wx because it has already been set to qt4

这使得问题看起来与this question.中的问题非常相似--然而,那里的解决方案似乎不适合崇高文本2。而且Spyder的解决方案对我不起作用,因为'Enthought工具套件‘选项是灰色的。任何帮助都是值得感激的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-21 10:53:18

对于遇到同样问题的其他人,我已经找到了解决办法。对我有用的是包括以下代码:

代码语言:javascript
复制
from traits.etsconfig.api import ETSConfig
ETSConfig.toolkit = 'qt4'

例如:

代码语言:javascript
复制
from traits.etsconfig.api import ETSConfig
ETSConfig.toolkit = 'qt4' # Force PyQt4 utilization

import numpy

dphi, dtheta = numpy.pi/250.0, numpy.pi/250.0
[phi,theta] = numpy.mgrid[0:numpy.pi+dphi*1.5:dphi,0:2*numpy.pi+dtheta*1.5:dtheta]
m0 = 4; m1 = 3; m2 = 2; m3 = 3; m4 = 6; m5 = 2; m6 = 6; m7 = 4;
r = numpy.sin(m0*phi)**m1 + numpy.cos(m2*phi)**m3 + numpy.sin(m4*theta)**m5 + numpy.cos(m6*theta)**m7
x = r*numpy.sin(phi)*numpy.cos(theta)
y = r*numpy.cos(phi)
z = r*numpy.sin(phi)*numpy.sin(theta)

# View it.
from mayavi import mlab
s = mlab.mesh(x, y, z)
mlab.show()

给出正确的结果。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34877937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档