簡體   English   中英

python-rtmidi示例代碼中的AttributeError

[英]AttributeError in python-rtmidi sample code

我為python安裝了rtmidi並且能夠導入它。 但是,當我試圖運行這里給出的整個用法示例: https//pypi.python.org/pypi/python-rtmidi時 ,我收到此錯誤:

AttributeError:'rtmidi_python.MidiOut'對象沒有屬性'get_ports'

這是完整的代碼:

import time
import rtmidi_python as rtmidi

midiout = rtmidi.MidiOut()
available_ports = midiout.get_ports()

if available_ports:
    midiout.open_port(0)
else:
    midiout.open_virtual_port("My virtual output")

note_on = [0x90, 60, 112] # channel 1, middle C, velocity 112
note_off = [0x80, 60, 0]
midiout.send_message(note_on)
time.sleep(0.5)
midiout.send_message(note_off)

del midiout

我在導入部分修改了一點代碼,因為當我放入import rtmidi時它不起作用但是當我放入import rtmidi_python時它會工作。

我正在使用Python 3.5。 任何幫助將不勝感激,謝謝!

你遇到麻煩的原因是你正在運行python-rtmidi的示例代碼,但你安裝了rtmidi-python 我沒跟你說,這是兩個獨立的庫,用幾乎相同的界面做同樣的事情。 這太瘋狂了! 您有兩種選擇:

  1. 您可以通過執行以下操作來安裝正確的庫: pip install python-rtmidi
  2. 您可以修改您的代碼,以便它與rtmidi-python ,如下所示:

     import time import rtmidi_python as rtmidi midiout = rtmidi.MidiOut() available_ports = midiout.ports if available_ports: midiout.open_port(0) else: midiout.open_virtual_port("My virtual output") note_on = [0x90, 60, 112] # channel 1, middle C, velocity 112 note_off = [0x80, 60, 0] midiout.send_message(note_on) time.sleep(0.5) midiout.send_message(note_off) del midiout 

您會看到:您只需引用ports屬性,而不是執行get_ports()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM