我在ipython笔记本中使用带有MuseScore的music21。它运行良好,唯一的问题是每次我创建一个Stream然后运行my_stream.show(),它需要一个永远,因为它等待打开MuseScore应用程序。即使MuseScore已经打开,也会发生这种情况(它会打开应用程序的第二个副本,然后在打印图像后自动关闭)。
我如何阻止music21每次重新打开MuseScore并让它使用已经打开的应用程序?
编辑:添加版本/操作系统信息
我正在使用MuseScore 2.1.0版的Mac(OSX 10.10.4)
我也尝试过概述here的方法在ipython笔记本中打印乐谱,但同样的事情发生了。
至少对于第二种方法,问题似乎在music21/converter/subConverter.py。
在
class ConverterMusicXML(SubConverter):
有这一部分:
musescoreRun = '"' + musescorePath + '" ' + fp + " -o " + fpOut + " -T 0 "
if 'dpi' in keywords:
musescoreRun += " -r " + str(keywords['dpi'])
if common.runningUnderIPython():
musescoreRun += " -r " + str(defaults.ipythonImageDpi)
storedStrErr = sys.stderr
fileLikeOpen = six.StringIO()
sys.stderr = fileLikeOpen
os.system(musescoreRun)
fileLikeOpen.close()
sys.stderr = storedStrErr
我相信这一行特别是
os.system(musescoreRun)
每次都会独立打开MuseScore,但是我无法弄清楚要用什么来取代它,这样才能让music21找到已经运行的MuseScore实例。
答案 0 :(得分:0)
同样的问题错误。这里指的是 GitHub 上的一个问题:
<块引用>... 将 subconverters.py 的 os.system(musescoreRun)
行 891 更改为 subprocess.run(musescoreRun)
。您还需要在 subconverters.py 的开头导入 subprocess。
也许它适合你!