Reaper中的Python脚本,无法正常运行的原因是什么?有大佬知道嘛?

问题详情


这是我创建的第一个脚本呢,无论内容是什么,都跳出这个提示窗,关键是在这个plugin里面的东西,不是我放置的,那么这里的错误信息代表着什么呢?
运行环境已经配置,这个问题可以排除了。如下:
image

做过的尝试

以下是ChatGpt的回答:
错误可能来自于无效的转义序列或代码中的编码不匹配。以下是你可以尝试解决这个问题的几个步骤:

检查转义序列:

  • 查找代码中是否存在无效的转义序列,特别是像 \ 这样的字符,可能被错误地解释或放置。
  • 错误信息提到了“无效的转义序列”,确保正则表达式或字符串中的任何转义序列都得到正确格式化。

编码问题:

  • 'gbk' 编解码器错误表明存在编码问题。确保文件正确编码,并且编码类型与用于读取文件的编码类型匹配。
  • 如果可能的话,尝试使用不同的编码方式(例如 UTF-8)打开文件,看看是否能解决 UnicodeDecodeError。

正则表达式模式:

  • 检查正则表达式模式是否正确,特别是在所提到的行号(reaper_python.py 中的第 16 行)附近。
  • 确保包含特殊字符或转义序列的正则表达式已正确格式化并转义。

调试工具:

  • 使用调试工具或 IDE 功能,这些工具可以突出显示语法问题或编码问题。像 Visual Studio Code 或 PyCharm 这样的 IDE 通常提供实时错误突出显示。

文件损坏:

  • 在某些情况下,文件损坏可能导致这些问题。如果可能的话,尝试访问未损坏的文件版本或从备份中恢复文件。

例子:

pythonCopy code

import re

# 正则表达式的示例用法
pattern = r'HWND)X&M([0-9A-F])

确保你的正则表达式模式和你应用它的字符串都被正确格式化和编码。如果问题仍然存在,你可能需要进一步进行调试,或者考虑寻求 Reaper 社区或支持渠道的帮助,以获取有关 Reaper Python API 和你使用的插件的更具体帮助。

检查模式中是否存在任何无效的转义序列,比如模式中的 ''

try:
# 使用正则表达式的代码
match = re.match(pattern, your_string)
# 检查应用匹配的字符串是否存在编码问题
except UnicodeDecodeError as e:
print(f"UnicodeDecodeError: {e}")
except SyntaxWarning as w:
print(f"SyntaxWarning: {w}")


确保你的正则表达式模式和你应用它的字符串都被正确格式化和编码。如果问题仍然存在,你可能需要进一步进行调试,或者考虑寻求 Reaper 社区或支持渠道的帮助,以获取有关 Reaper Python API 和你使用的插件的更具体帮助。

image

感谢,我也找过GPT了,做了各种尝试,还是没搞明白,我这脚本里只有三行测试的内容,没有符号,编码保存时也是utf-8,这点是确定的,就是不知道什么原因,用Python写个reaper的脚本,真是困难重重.......555.....................

那就放弃python吧。也许可以拥有eel,lua,jsfx

Python不是reaper的亲儿子 :rofl:

见同类问题解决方式。

image
用的PyCharm,里面这里默认的是utf-8,难道还有其他地方也要设置一下吗?

reaper支持3.12了吗?

我去,真没考虑这个问题,那我得去官网看看 :sweat_smile:感谢Z佬提醒

image

找到了,官网写着支持2.7-3.x的所有版本,那应该不是这个问题了

如果方便,发脚本上来看看。

是我看错了。原来是 reaper_python.py 这个文件,它是 REAPER 自带的,语法可能有变。

3.12 测试可用 @Shawn_Holmes_Hu

你是不是某个符号输入成全角或之类的语法错误。

这个一直是这么写的,12是后来才出的,所以可能有关也可能无关。我为什么在很多场合建议新入手写脚本避免用python,就是太多这种可能这可能那的,代码以外的影响因素,导致学习的过程困难重重

不好意思,才看到,脚本那个也是个输出到控制台的测试,然后我按照你的这个写进去,还是一样的报错,确定符号是没有问题的
test.py (40 字节)
:rofl:

Z佬的建议有道理,新手从Python入门,真是不容易 :zipper_mouth_face:

你的 REAPER 版本是?

7.02
image


官网有个这个api测试,这个可以运行成功,除此之外,其他的好像不行
image

RPR_ShowMessageBox("Hello World!", "test", 0)
函数有其它参数的

控制台函数RPR_ShowConsoleMsg( msg )
测试了一下,py函数不能输中文?lua是可以的

@Shawn_Holmes_Hu

我知道问题所在了,首先你用的函数缺少了参数,如这位朋友所述,所以运行不正确。

然后我测试下在 Windows,即使参数正确,也有可能会运行失败。因为 Windows 不是默认 utf-8,可能 REAPER 跟随系统运行在 gbk,运行的时候 utf-8 转到 gbk 有可能会出错。

同样中文 print 乱码也是这个原因。


折中的解决方式是在 控制面板 - 语言区域 - 开启 Beta 的 utf-8 支持。

就能打印中文

但由于 Windows 一直以来都是根据语言选择而决定系统使用的编码,所以有一些其他的中文软件,本来就依着 gbk 去设计,如果启用了这个功能,你会发现有些软件只支持 gbk 的,在 utf-8 下反而是乱码。


Linux 和 macos 默认是 utf-8,所以只有 Windows 用户会遇见这个问题。

1 个赞