NameError 尝试使用来自 mido 的 get_output_names

NameError trying to use get_output_names from mido

我正在尝试掌握我安装的名为 'mido' 的 Python 模块,用于处理 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 文件中,interpreting/running 我得到了相同的错误消息(分别针对带有和不带 '.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 * 选取的名称列表,将其设置为 [] 可确保不会导入任何内容。

它还通过使用 set_backend helper function.

在模块字典中设置了几个附加函数(如 get_output_names

因此,要么直接导入 mido 并通过在模块名称前加上前缀使用 get_output_names

import mido
mido.get_output_names(...)

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

from mido import get_output_names
get_output_names(...)

好像很奇怪,可以这样试试:

import mido

然后从包中调用函数时,使用:

mido.get_output_names()

你也可以这样导入:

import mido as md

然后:

md.get_output_names()

还有:
- 尝试进入包目录,并查看文件 - 尝试在导入时从终端的包中获取帮助:

import mido
help(mido)