如何在ipython/python中使用music21和MuseScore来显示乐谱,而无需每次调用MuseScore.show()时重新打开?

如何在ipython/python中使用music21和MuseScore来显示乐谱,而无需每次调用MuseScore.show()时重新打开?,ipython,music21,Ipython,Music21,我在ipython笔记本中使用music21和Musecore。它工作得很好,唯一的问题是,每次我创建一个流,然后运行我的_Stream.show(),都需要一段时间,因为它会等待打开MuseScore应用程序。即使MuseScore已经打开(它打开应用程序的第二个副本,然后在打印图像后自动关闭),也会发生这种情况 如何防止music21每次重新打开MuseScore,并让它使用已打开的应用程序 编辑:添加版本/操作系统信息 我在mac(OSX 10.10.4)上使用MuseScore 2.1.

我在ipython笔记本中使用music21和Musecore。它工作得很好,唯一的问题是,每次我创建一个流,然后运行我的_Stream.show(),都需要一段时间,因为它会等待打开MuseScore应用程序。即使MuseScore已经打开(它打开应用程序的第二个副本,然后在打印图像后自动关闭),也会发生这种情况

如何防止music21每次重新打开MuseScore,并让它使用已打开的应用程序

编辑:添加版本/操作系统信息

我在mac(OSX 10.10.4)上使用MuseScore 2.1.0版

我也尝试过在ipython笔记本上打印乐谱的方法,但同样的事情发生了

至少对于第二种方法来说,问题似乎在这里

这一部分:

    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实例。

同样的问题错误。这里提到一个问题:

。。。通过
subprocess.run(musescoreRun)
更改subconverters.py的
os.system(musescoreRun)
行891。您还需要在subconverters.py的开头导入子流程


也许它对你有用

这可能与您的操作系统有关。在Mac电脑上运行良好,上次我检查时,在PC上也运行良好。关于操作系统等的更多信息需要在那里。好的,我添加了更多关于版本/操作系统的信息,以及我怀疑问题出在哪里。顺便说一句,谢谢你的音乐,迈克尔!这真的很有帮助。
os.system(musescoreRun)