【问题标题】:Maya Python - "You need a shiboken-based type" ErrorMaya Python - “您需要基于 shiboken 的类型”错误
【发布时间】:2020-06-24 20:00:32
【问题描述】:

Maya 中的许多基于 Python 的工具现在返回一个对我来说是新的错误。 "你需要一个基于 shiboken 的类型。#"

对 Python 非常陌生,所以我真的不知道问题出在哪里。 看了一圈后发现可能是定义冲突

QtGui”模块可能被多次导入,造成上述冲突。 不完全确定这是主要原因,但目前是主要嫌疑人。

老实说,我刚刚开始注意到 Maya 的一些 Python 工具因此无法运行(例如“类型”创建工具),这意味着我已经使用 安装/卸载了几个 Python 包pip 在遇到问题之前。我不知道哪个包可能导致冲突。

是否有任何常见的嫌疑人会导致这种冲突? 我尝试卸载一些较新的软件包,但没有成功。

在我找到之前,我也不想通过单独移除包裹来损坏其他任何东西。

这些是安装的包:

• aenum 2.2.3
• altgraph 0.10.2
• 应用程序目录 1.4.3
• bdist-mpkg 0.5.0
• 闪光灯 1.4
• bonjour-py 0.3
• docutils 0.16
• macholib 1.5.1
• matplotlib 1.3.1
• 模块图 0.10.4
• 九 1.1.0
• 鼻子 1.3.7
• numpy 1.8.0rc1
• 点 20.0.2
• 层 3.11
• ptvsd 4.3.2
• py2app 0.7.3
• PyFlow 2.0.1
• pyobjc-core 2.5.1
• pyobjc-framework-Accounts 2.5.1
• pyobjc-framework-AddressBook 2.5.1
• pyobjc-framework-AppleScriptKit 2.5.1
• pyobjc-framework-AppleScriptObjC 2.5.1
• pyobjc-framework-Automator 2.5.1
• pyobjc-framework-CFNetwork 2.5.1
• pyobjc-framework-Cocoa 2.5.1
• pyobjc-framework-Collaboration 2.5.1
• pyobjc-framework-CoreData 2.5.1
• pyobjc-framework-CoreLocation 2.5.1
• pyobjc-framework-CoreText 2.5.1
• pyobjc-framework-DictionaryServices 2.5.1
• pyobjc-framework-EventKit 2.5.1
• pyobjc-framework-ExceptionHandling 2.5.1
• pyobjc-framework-FSEvents 2.5.1
• pyobjc-framework-InputMethodKit 2.5.1
• pyobjc-framework-InstallerPlugins 2.5.1
• pyobjc-framework-InstantMessage 2.5.1
• pyobjc-framework-LatentSemanticMapping 2.5.1
• pyobjc-framework-LaunchServices 2.5.1
• pyobjc-framework-Message 2.5.1
• pyobjc-framework-OpenDirectory 2.5.1
• pyobjc-framework-PreferencePanes 2.5.1
• pyobjc-framework-PubSub 2.5.1
• pyobjc-framework-QTKit 2.5.1
• pyobjc-framework-Quartz 2.5.1
• pyobjc-framework-ScreenSaver 2.5.1
• pyobjc-framework-ScriptingBridge 2.5.1
• pyobjc-framework-SearchKit 2.5.1
• pyobjc-framework-ServiceManagement 2.5.1
• pyobjc-framework-Social 2.5.1
• pyobjc-framework-SyncServices 2.5.1
• pyobjc-framework-SystemConfiguration 2.5.1
• pyobjc-framework-WebKit 2.5.1
• Pyomo 5.6.8
• pyOpenSSL 0.13.1
• pyparsing 2.0.1
• PyQt5 5.14.1
• PyQt5-sip 12.7.1
• PySide2 5.14.1
• python-dateutil 1.5
• pytz 2013.7
• PyUtilib 5.7.3
• Qt.py 1.2.4
• qtwidgets 0.11
• scipy 0.13.0b1
• 安装工具 18.5
• setuptools 28.8.0
• shiboken2 5.14.1
• 六个 1.14.0
• 6 1.4.1
• vboxapi 1.0
• xattr 0.6.4
• zope.interface 4.1.1

任何帮助将不胜感激。

编辑 - 2020 年 12 月 3 日 20:30

作为发生此错误的示例,我还包括来自 PyFlow 的此脚本:

import ptvsd
from maya import OpenMayaUI as omui
from shiboken2 import wrapInstance
from PyFlow.App import PyFlow
from PySide2.QtWidgets import QWidget

try:
    long  # Python 2
except NameError:
    long = int  # Python 3path

ptvsd.enable_attach(address=('0.0.0.0', 3000), redirect_output=True)

mayaMainWindowPtr = omui.MQtUtil.mainWindow()
mayaMainWindow = wrapInstance(long(mayaMainWindowPtr), QWidget)

if PyFlow.appInstance is None:
    instance = PyFlow.instance(mayaMainWindow, "maya")
    instance.show()

"PyFlow" 是一个很有前途的可视化脚本小工具,非常适合像我这样的新手。当我第一次运行它时,问题并没有开始,但它帮助我注意到 Maya 中许多其他基于 python 的工具现在也出现的错误。

如果我尝试运行它,例如:

"# Error: TypeError: file line 15: You need a shiboken-based type. #"

【问题讨论】:

    标签: python maya pyside2 qtgui shiboken2


    【解决方案1】:

    你有一个导入 QT ui 的脚本示例。 您还使用哪个版本的 Maya?

    你所有的导入都是这样的吗:

    from PySide2 import QtWidgets, QtGui, QtCore
    import shiboken2
    

    您是否可以将 PyQt 和 PySide 与一些“import sip2”混合使用

    ---编辑---

    from maya import OpenMayaUI as omui
    from shiboken2 import wrapInstance
    from PyFlow.App import PyFlow
    import PySide2.QtWidgets as QtWidgets
    
    mayaMainWindowPtr = omui.MQtUtil.mainWindow()
    mayaMainWindow = wrapInstance(long(mayaMainWindowPtr), QtWidgets.QWidget)
    
    if PyFlow.appInstance is None:
        instance = PyFlow().instance(mayaMainWindow, 'maya')
        instance.show()
    

    【讨论】:

    • 我使用的是 Maya 2019。当我尝试使用名为“PyFlow”的工具时,我开始注意到这个问题。该存储库有一个 Maya 启动器,所以我决定尝试一下。那是我收到类型错误的时候,然后开始在 Maya 中其他基于 Py 的工具上注意到它。我将在原始帖子中添加给出此类错误的脚本作为示例。同样,当我开始使用该工具时,问题并没有开始,但它只是让我意识到其他 Py-Tools 突然也遇到了同样的问题。
    • 它正在使用 Qt 模块,您是否在所有脚本中都使用 Qt 模块?它可能确实是 PyQt5 和 PySide2 育儿小部件到 Maya 窗口之间的某种糟糕组合
    • 另外我看到你确实放了一张票,你有没有在 Mac 上尝试 shiboke2,构建一个小 ui?
    • 我以前从未做过任何需要我使用 Qt、PySide 或 Shiboken 的东西。我还在学习,所以我以前从来没有用 UI 做过任何东西。我尝试使用pip uninstall PyQt5 删除 PyQt5 包,但这并没有帮助。冲突持续存在。另外,抱歉,不知道您所说的“票”是什么意思。
    • 为了将 PySide 或 PyQt 设置为 Maya 窗口的父级,使用了两个不同的模块:sip for PyQt,shiboken 和 PySide。 Qt 是 Marcus Ottosson 的一个包装器,它试图解决 PySide、PyQt4、PySide2、PyQt5,默认情况下它应该使用 PySide2。也许在一个脚本的某个地方,您在 PyQt5、PySide2 和 Qt 为窗口设置父级之间存在冲突。您需要在脚本中找到任何 shiboken2 或 sip2,因为 ui 是由非 shiboken 对象提供的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 2015-04-07
    • 2022-11-29
    • 1970-01-01
    • 1970-01-01
    • 2018-01-11
    相关资源
    最近更新 更多