我试图与我安装的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/