我正在尝试使用我安装的名为'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文件中并解释/运行它并得到相同的错误消息(分别包含和不包含'.mido')
任何人都可以帮我解决我错过的问题吗?
我也尝试了from mido.port import *
并在尽可能多的组合中调用port.get_output_names()
,并使用类似的等效NameError
消息。
答案 0 :(得分:4)
查看__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(...)
答案 1 :(得分:0)
看起来很奇怪,也许这样试试:
select payment.customer_id
然后在从包调用函数时,使用:
import mido
你也可以这样导入:
mido.get_output_names()
然后:
import mido as md
此外:
- 尝试进入包目录,并查看文件
- 导入时尝试从终端获取包裹的帮助:
md.get_output_names()