I'm new to Python, but I'm having some trouble using the mayavi package on Windows. I have installed Python(x,y) and I'm using the Sublime Text 2 and Spyder editor. So far I have found that running this code from the mayavi website:
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()
Results in the following error:
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]
The weird thing is, when running the mayavi code directly in command prompt, it does work! So why do I get the error in both Sublime Text 2 and in Spyder?
Thank you for taking the time to look at my question
Edit: when importing numpy completely instead of the pi, sin, cos, and mgrid commands only: the error changes to:
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 makes the problem seem very similar to the one in this question. The solution there does not seem feasible for Sublime Text 2, however. And the Spyder solution does not work for me because the 'Enthought Tool Suite' option is greyed out. Any help is still appreciated!
For other running into the same problem, I have found the solution. What worked for me is including the following code:
from traits.etsconfig.api import ETSConfig
ETSConfig.toolkit = 'qt4'
For example:
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()
gives the correct result.