症状
启动Nuke 16 或更高版本时,如果您有使用 PySide2 的自定义 Python 代码,则启动时会遇到错误,因为插件运行失败:
如果您是通过命令提示符或终端启动的,那么您也会看到类似这样的错误信息: ModuleNotFoundError: No module named 'PySide2' :
原因
随着Nuke 16 中VFX 参考平台 2024的更新,PySide 库也更新为 PySide6。这意味着 PySide 模块现在有了新的导入名称。
这与Nuke 11 在 VFX Reference Platform 2017 更新中从 PySide 迁移到 PySide2 的情况类似。更多信息请参阅我们的文章: Q100398:如何在Nuke 11+ 中解决使用 PySide Python 脚本的问题
解决
为了解决这个问题,你的代码需要更新以与 PySide6 兼容。
在许多情况下,您可以替换:
import PySide2
和:
import PySide6
这应该可以解决绝大多数问题,因为与从 PySide 升级到 PySide2 不同,这次升级没有大的模块更改。
一个可能会影响用户的显著变化是, QAction类已从PySide2.QtWidgets移至PySide6.QtGui ,后者用于Nuke界面中的菜单操作。
如果您使用了受影响的模块或函数,您的代码中可能还需要进行一些其他更改。更多信息请访问 Qt for Python 的网站: https://doc.qt.io/qtforpython-6/faq/porting_from2.html
或者,您可以使用第三方Qt.py来帮助映射所有不同的 PySide/PyQt 库版本,使您的代码与库版本无关。
例如这样的句子:
from PySide2 import QtWidgets, QtCore, QtGui
将成为:
from Qt import QtWidgets, QtCore, QtGui
只要Qt.py已添加到您的Nuke路径中,您就可以在不同的Nuke版本之间导入该模块,而无需修改代码以适应特定Nuke版本。Qt.py可在 GitHub 上找到: https://github.com/mottosso/Qt.py
注意:Qt.py 项目由第三方创建,因此,任何问题或疑问都需要向项目所有者报告。
延伸阅读
下面还可以找到其他关于如何从 PySide2 转换为 PySide6 的第三方指南:
https://erwanleroy.com/updating-your-python-scripts-for-nuke-16-and-pyside6/
我们很遗憾听到
请告诉我们