我试图与我安装的Python模块“ mido”打交道,以处理MIDI I / O。

函数mido.get_output_names应该告诉我哪些输出端口可用,但是,当我尝试在交互式解释器中使用它时,出现以下错误:

Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 07:18:10) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from mido import *
>>> mido.get_output_names()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'mido' is not defined
>>> get_output_names()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'get_output_names' is not defined
>>>


我也看到过类似问题的其他问题,但是建议的解决方案似乎是在调用之前命名程序包(在本例中为“ mido。”),但是如您所见,这似乎没有什么区别。

我也尝试将代码放在.py文件中并进行解释/运行,并且得到相同的错误消息(分别针对带有和不带有'.mido'的情况)

谁能帮我解决我错过的事情吗?

我还尝试了from mido.port import *并以我能想到的尽可能多的组合调用port.get_output_names(),并使用了类似的等效NameError消息。

最佳答案

查看__init__.py file of the mido module,您可以看到通过将*设置为空列表,它可以防止星形__all__导入:

# Prevent splat import.
__all__ = []


__all__from mod import *选择的名称列表,将其设置为[]可确保没有导入任何内容。

它还通过使用get_output_names helper function在模块字典中设置了几个附加功能(例如set_backend)。

因此,直接导入mido并通过在模块名称前添加get_output_names即可:

import mido
mido.get_output_names(...)


或者,从模块中导入名称并直接使用它:

from mido import get_output_names
get_output_names(...)

关于python - 尝试使用Mido中的get_output_names的NameError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42975735/

10-09 01:51