- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我无法从 Spyder IDE 中运行/使用 Mayavi 库。我已经在下面描述了这个问题。任何帮助都会非常有用。 (提前非常感谢。)
重现问题的步骤:
from numpy import sin, cos, mgrid
import mayavi.mlab as mmlab
def f(x,y):
return sin(x + y) + sin(2*x - y) + cos(3*x + 4*y)
x,y = mgrid[-7.:7.05:0.01, -5.:5.05:0.05]
z = f(x,y)
s = mmlab.contour_surf(x,y,z)
mmlab.show()
预期输出和错误:
预期输出:带有图形的 Mayavi 图形窗口。相反,我看到的是:控制台窗口中出现以下值错误(为了明确起见,我包含了完整的消息序列):
------------------------ 错误信息的开头------------ ----
Traceback (most recent call last):
File "C:\PROGRAMSANDEXPERIMENTS\PYTHON\MayaviScripts\Learning\testMayavi.py", line 2, in <module>
import mayavi.mlab as mmlab
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 35, in <module>
from .editors.api import (ArrayEditor, BooleanEditor, ButtonEditor,
File "C:\Python27\lib\site-packages\traitsui\editors\__init__.py", line 22, in <module>
from .api import (toolkit, ArrayEditor, BooleanEditor, ButtonEditor,
File "C:\Python27\lib\site-packages\traitsui\editors\api.py", line 10, 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 487, in __call__
return self.maker_function( *args, **metadata )
File "C:\Python27\lib\site-packages\traits\traits.py", line 1183, 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 109, in toolkit
_toolkit = _import_toolkit(ETSConfig.toolkit)
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\qt4\__init__.py", line 18, in <module>
import pyface.qt
File "C:\Python27\lib\site-packages\pyface\qt\__init__.py", line 35, in <module>
prepare_pyqt4()
File "C:\Python27\lib\site-packages\pyface\qt\__init__.py", line 17, in prepare_pyqt4
sip.setapi('QString', 2)
ValueError: API 'QString' has already been set to version 1
---------------------------- 错误消息结束------------ --------
我的环境如下:
至少在以下两个环境中观察到此问题:
描述:Spyder 和所有其他组件是使用 Pythonxy 发行版 (Py(x,y)-2.7.2.3.exe) 在 Windows 7 32 位计算机上安装的。蜘蛛版本:2.1.9Python 版本:2.7.2(32 位)Qt 版本:4.7.4,Windows 上的 PyQt4 (API v1) 4.8.6Mayavi 版本:4.1.0
描述:在一台运行 64 位 Windows 7 的单独机器上,我安装了 64 位版本的 Enthought EPD 发行版。所以它运行的是 2.7.3 (x64) 版本的 Python 发行版。由于EPD包不包含Spyder,我在安装PyQt GPLv4.9.4后手动安装了Spyder。
蜘蛛版本:2.1.11Python 版本:2.7.3(64 位)Qt 版本:4.8.2,Windows 上的 PyQt4 (API v2) 4.9.4Mayavi 版本:4.2.0
附加信息:
我确信代码没有问题,因为脚本在“外部”spyder 环境中执行时会产生预期的输出。例如,使用 IPython shell。
谢谢。
最佳答案
感谢 Avaris 的回复。
我现在有一个解决方案(我不确定它是否是一个“修复”)。我在 Tools->Preferences->Console->External Modules->Enthought Tool Suite->ETS_TOOLKIT
中修改了以下设置:从 Qt4
更改为 wx
。更改此设置后,我可以直接从 Spyder 中使用 Mayavi 库和 Mayavi 绘图执行代码。
关于python - Mayavi 不从 Spyder : complains about "ValueError: API ' QString' . 中运行......",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12442938/
为什么 Qt 5.1.0 Release Candidate 函数 QString::replace(const QRegExp & rx, const QString & after) 以某种方式处
我想知道最有效的方法是将保存为 QString 的二进制文件转换为相应的十六进制并将其保存在同一个 QString 中 QString value = "10111100" 进入 value = "b
我从文件中读取了两个 QString (ValueOne,ValueTwo)(只是一个基本示例) int main(int argc, char *argv[]) { QString x =
请注意 QString 和 & 之间的空格。我想知道在QT中,QString&和QString &之间有什么区别吗? 最佳答案 不,没有区别。它是纯 C++ 语法。 C++ 可以被认为是一种与空格无关
我有这样的东西: void ReadFileAndConvert () { QFile File (Directory + "/here/we/go"); if(File.open(Q
我终于在 Eclipse 中运行了 C++/QT 项目。但是当我尝试包括例如QString 我只得到代码完成中提供的 qstring.h,手动输入 QString 也可以。 我检查了只包含 qstri
我非常想找到关于上述错误的任何信息。 我正在使用 visual studio 2010。当我在调试或发布中编译我的项目(32 位)时,我收到以下消息: 1>heterogeneous.obj : er
因为我不是 C(++) 专家,所以我被编译器的一些固执所困扰,不想将 QString 转换为 QString*。我有一个功能: bool getNextMessage(int sId, QString
比较2 QString是否更快s 包含数字,或转换那些 QString s 到数字然后比较数字? 那么哪个更快? QString str1,str2; if(str1.compare(str2)==0
我对使用指针和引用感到困惑,我遇到了一个小问题。 我有一个函数: bool myObject::isFlag( QString &pArgument) const { } 我正在使用它: QStrin
我需要一个优雅的 C++ 函数,它采用包含 unix 时间的 QString 参数(例如 1295874681)并将其转换为包含 QString 的标准时间格式(例如 Mon, 24 Jan 2011
如果 QString 是本地的,那么用 QString 发出信号的正确方法是什么。我的意思是我在 wigdetA 中有这样的功能 void wigdetA::something() { // //e.
我关注 QObject : #ifndef UETYPES #define UETYPES #include #include #include #include #include #inc
我尝试使用 foreach 遍历 QHash 并获取 QHash 中的每一对,然后获取它们的键和值,以便我可以将它们附加到字符串。 这是我的 QString Packet::Serialize() {
如何使用 QMap::const_iterator作为指针? QMap::const_iterator *i = map -> constBegin(); while (i !=
在我的项目中,我需要将十六进制 QString ("c2a774657374") 转换为 UTF-8 编码的 QString ("§test") 我当前的函数 (HexToAscii) 确实将十六进制
我想将另一个类 的 QString 转换为 Int,但它似乎失败了,因为结果是 0 而它应该是 5 并且其余代码有效.因为我是 C/Qt 的新手并且发现类有点困惑,所以我认为我的类做错了什么。 小部件
我在用 C++ 编写的 GUI 项目中使用了 Qt 4.8.4。现在我合并到 Qt 5.7 版。经过长时间调整我的代码后,我终于打开了我的 GUI。但是当我运行我的计算代码时,我仍然得到这个错误: 没
我对 qt 和 C++ 比较陌生,我很难理解为什么我可以在头文件中声明以下内容: const char* CONSIGNMENT_TAG_DONATE = "DTag"; 或 QString CONS
QString 文档 http://doc.qt.io/qt-5/qstring.html#arg说 One advantage of using arg() over sprintf() is th
我是一名优秀的程序员,十分优秀!