gpt4 book ai didi

python - Julia PyCall 在运行 Music21 模块时遇到困难

转载 作者:太空宇宙 更新时间:2023-11-04 00:12:00 24 4
gpt4 key购买 nike

我是初学者,在使用 Julia 的 PyCall 与 MIT Python 音乐模块 music21 交互时遇到困难。

根据 Music21 的网站,为了用乐谱显示一段短旋律,可以在 Python 中输入:

converter.parse("tinynotation: 3/4 c4 d8 f g16 a g f#").show()

以下是我尝试在 Julia 中执行此代码所做的工作:

我首先初始化了 music21,它似乎可以工作:

@pyimport music21
music21: Certain music21 functions might need these optional packages: matplotlib, scipy; if you run into errors, install them by following the instructions at http://mit.edu/music21/doc/installing/installAdditional.html

然后我尝试通过键入以下内容在 Julia 中重新创建上述 Python 示例:

converter.parse("tinynotation: 3/4 c4 d8 f g16 a g f#").show()

I received this error:
ERROR: UndefVarError: converter not defined
Stacktrace:
[1] eval(::Module, ::Any) at ./boot.jl:235

更新 1根据 rickhg12hs 的建议,我尝试了 music21.converter.parse("tinynotation: 3/4 c4 d8 f g16 a g f#").show()。

现在我在“解析”上收到此错误消息:错误:类型 PyObject 没有字段解析 Stacktrace:1 eval(::Module,::Any) 在./boot.jl:235

这似乎是一个改进,因为它现在在代码链的后面一点崩溃,在“解析”而不是“转换器”处。

更新 2 - 修复此问题与 dot overloading 有关.基于此链接,我尝试将代码修改为如下所示:

music21.converter[:parse]("tinynotation: 3/4 c4 d8 f g16 a g f#")[:show]()

但是现在我得到了这个错误

FSPathMakeRef(/Applications/MuseScore 2.app/Contents/MacOS/mscore) failed with error -43.

我发现我最后要做的就是下载 MuseScore,现在问题已经解决了!

请参阅@crstnbr 的回答,了解有关此解决方案的丑陋之处和即将进行的修复的更多背景信息。

非常感谢!那库尔

最佳答案

我没有安装这个包(我会在一秒钟内测试它)但是下面应该可以工作:

@pyimport music21 as m
m.converter[:parse]("tinynotation: 3/4 c4 d8 f g16 a g f#")[:show]()

请注意,在我的 Pull request 之后,在 Julia 1.0 中,可以说是丑陋的(但系统的)[:fieldname] 访问很快就会消失。这里合并了。使用这种语法的原因是 Julia 不允许覆盖 . 访问功能。幸运的是,这在 Julia 1.0 中有所改变。

关于python - Julia PyCall 在运行 Music21 模块时遇到困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52196356/

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