Как мне использовать библиотеку MIDIUtil, не вызывая ошибки импорта?

#python #python-import #importerror #midi

#python #python-импорт #importerror #midi

Вопрос:

В прошлом я уже использовал MIDIUtil для работы без ошибок импорта на моем Mac. По какой-то причине теперь он перестал работать и выдает ошибку импорта, независимо от того, как я пытаюсь изменить каталог файлов или имя модуля в моем коде:

 ImportError: No module named midiutil
 

Я просто пытаюсь запустить файл «example», расположенный в пакете:

 #!/usr/bin/env python

from midiutil import MIDIFile

degrees  = [60, 62, 64, 65, 67, 69, 71, 72]  # MIDI note number
track    = 0
channel  = 0
time     = 0    # In beats
duration = 1    # In beats
tempo    = 60   # In BPM
volume   = 100  # 0-127, as per the MIDI standard

MyMIDI = MIDIFile(1)  # One track
MyMIDI.addTempo(track, time, tempo)

for i, pitch in enumerate(degrees):
    MyMIDI.addNote(track, channel, pitch, time   i, duration, volume)

with open("major-scale.mid", "wb") as output_file:
    MyMIDI.writeFile(output_file)
 

Я прочитал несколько сообщений о переполнении стека по этому вопросу, которые рекомендуют:

 from midiutil.MidiFile import MIDIFile
 

и:

 from midiutil.MidiFile3 import MIDIFile
 

Кажется, я перепробовал все варианты, но определенно есть что-то, чего мне не хватает!

Я новичок в Python и программировании в целом, поэтому заранее благодарю за помощь!

Комментарии:

1. Пакет был успешно установлен? Используете ли вы правильную установку Python?

2. Я бы попробовал переустановить пакет. pypi.org/project/MIDIUtil

3. @AMC, да, насколько я знаю. У меня самая последняя версия pip, и я получил это: pip install MIDIutil Requirement already satisfied: MIDIutil in /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages (1.2.1)

4. @RobertHarvey Я переустановил новейшую версию библиотеки, но никаких изменений.

5. @CallumMurray Выполняется ли скрипт с использованием той же установки Python?

Ответ №1:

Если вы работаете в venv созданной виртуальной среде, это может произойти при обновлении вашей версии python (и удалении предыдущей версии python из системы). При обновлении версии python virtualenv все равно активируется без ошибок, но на самом деле это не работает, поэтому, если сценарий зависит от импорта модуля из virtualenv, он не найдет модуль.

Решение заключается в использовании --upgrade флага для обновления venv для использования текущей версии python. Пример: python -v venv <name-of-venv> --upgrade . После обновления MIDIUtil и другие модули в venv должны работать правильно.