gpt4 book ai didi

python - 在 REAPER 内多次运行 PyQt4 脚本会导致 SIP 错误

转载 作者:太空宇宙 更新时间:2023-11-03 21:44:21 28 4
gpt4 key购买 nike

一些背景: REAPER是一个数字音频工作站,具有 extensive scripting API与 Lua、Python、C/C++ 和 EEL 绑定(bind)。我还没有找到太多关于它如何在内部处理 Python 的信息。从表面上看,配置涉及指向系统上某处的 Python DLL。截图

问题:我尝试运行 PyQt4 脚本的修改版本,发现 here收割者里面。起初它工作得很好

在随后运行同一脚本时,会弹出错误:

 Traceback (most recent call last):
File "pyqt_test.py", line 2, in <module>
from PyQt4 import QtGui
RuntimeError: the sip module has already registered a module called PyQt4.QtCore

重新启动 REAPER 可以解决再次运行脚本的问题,然后再次显示相同的错误。

谷歌搜索这个问题并没有多大帮助。有one message在 PyQt 邮件列表中提到了该错误,并且解决方案涉及包的 __init__文件但没有其他详细说明。

这是我正在运行的修改后的脚本:

import sys
from PyQt4 import QtGui

def main():
sys.argv = [] # necessary because for some reason argv doesnt exist when the script is run inside REAPER

app = QtGui.QApplication(sys.argv)
widget = QtGui.QWidget()
layout = QtGui.QGridLayout()

buttons = {}

for i in range(16):
for j in range(16):
# keep a reference to the buttons
buttons[i, j] = QtGui.QPushButton('row %d, col %d' % (i, j))
# add to the layout
layout.addWidget(buttons[i, j], i, j)

widget.setLayout(layout)
widget.show()
app.exit(app.exec_())

if __name__ == '__main__':
RPR_defer('main()') # RPR_defer runs supplied code in REAPER's GUI thread.

关于发生了什么以及如何解决/解决它有什么想法吗?

最佳答案

使用 Python ReaScript API 多次导入外部库存在一个已知错误。 numpy 也会发生这种情况(因此所有依赖它的库)也会发生这种情况。

我一直在研究通过编写 reapy 库来解决这个问题的方法。它允许从 REAPER 外部(例如在常用终端中)调用 ReaScript API 的函数,从而安全地导入任何第三方库(包括 PyQt4)。您可以查看documentationrepository如果你有兴趣!

关于python - 在 REAPER 内多次运行 PyQt4 脚本会导致 SIP 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52602091/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com