NameError尝试使用mido的get_output_names

时间:2017-03-23 12:15:00

标签: python python-3.x python-import nameerror

我正在尝试使用我安装的名为'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消息。

2 个答案:

答案 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()