Как я могу решить проблему “нет модуля с именем ‘_lzma'”?

Вопрос или проблема

Я пытаюсь запустить программу BoltzTraP2, установленную на Ubuntu 20.04.1 LTS, но получаю эту ошибку. Пожалуйста, дайте мне знать, как я могу это решить. Я установил pandas и liblzma-dev, но ошибка все равно появляется.

==========================================================
 вы можете установить pyfftw для повышения производительности FFT
Traceback (последний вызов последним):
  Файл "/home/syl2/.local/bin/btp2", строка 11, в <module>
    load_entry_point('BoltzTraP2==20.7.1', 'console_scripts', 'btp2')()
  Файл "/home/syl2/.local/lib/python3.8/site-packages/pkg_resources/__init__.py", строка 473, в load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  Файл "/home/syl2/.local/lib/python3.8/site-packages/pkg_resources/__init__.py", строка 2843, в load_entry_point
    return ep.load()
  Файл "/home/syl2/.local/lib/python3.8/site-packages/pkg_resources/__init__.py", строка 2447, в load
    return self.resolve()
  Файл "/home/syl2/.local/lib/python3.8/site-packages/pkg_resources/__init__.py", строка 2453, в resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  Файл "/usr/local/lib/python3.8/site-packages/BoltzTraP2/interface.py", строка 58, в <module>
    import BoltzTraP2.serialization
  Файл "/usr/local/lib/python3.8/site-packages/BoltzTraP2/serialization.py", строка 32, в <module>
    import lzma
  Файл "/usr/local/lib/python3.8/lzma.py", строка 27, в <module>
    from _lzma import *
ModuleNotFoundError: No module named '_lzma'

Мне так жаль, но предыдущий ответ неверен.

Забудьте все про этот pylzma. И если вы что-то изменили, отмените это, и мне очень жаль, что я вывел вас на этот путь. Я получил правильный ответ на основе этого поста:

https://github.com/ultralytics/yolov5/issues/1298

Кратко, pip install lzma не сработает, сделайте вместо этого:

pip install backports.lzma

и перейдите в вашу директорию python:

cd /usr/local/lib/python3.8

и вы измените ваш файл lzma.py. Я смог сделать это только с высшим уровнем разрешения, поэтому я сделал

sudo nano lzma.py

В начале есть две строки

from _lzma import *
from _lzma import _encode_filter_properties, _decode_filter_properties

Измените их на

from backports.lzma import *
from backports.lzma import _encode_filter_properties, _decode_filter_properties

и сохраните и закройте файл. Boltztrap2 теперь может работать.

Ответ или решение

Чтобы решить проблему "нет модуля с названием ‘_lzma’", с которой вы столкнулись при запуске программного обеспечения BoltzTraP2 на Ubuntu 20.04.1 LTS, следуйте этим рекомендациям. Данная проблема часто возникает в результате отсутствия модуля lzma в вашей среде Python, и хотя вы установили необходимые пакеты, решение требует некоторых дополнительных действий.

Шаг 1: Установка backports.lzma

Первым делом вам необходимо установить пакет backports.lzma, который обеспечивает совместимость с отсутствующим модулем. Для этого выполните следующую команду в терминале:

pip install backports.lzma

Шаг 2: Изменение файла lzma.py

После установки пакета вам потребуется внести изменения в системный файл lzma.py. Для этого выполните следующие шаги:

  1. Перейдите в директорию, где установлен Python. Например, для Python 3.8 выполните команду:
cd /usr/local/lib/python3.8
  1. Откройте файл lzma.py с правами администратора. Вы можете использовать команду nano, чтобы отредактировать файл:
sudo nano lzma.py
  1. Найдите и измените строки:
from _lzma import *
from _lzma import _encode_filter_properties, _decode_filter_properties

на следующие:

from backports.lzma import *
from backports.lzma import _encode_filter_properties, _decode_filter_properties

Шаг 3: Сохранение и выход

После внесения изменений сохраните файл (в nano это делается комбинацией клавиш CTRL + O, затем нажмите Enter, чтобы подтвердить), и выйдите из редактора (CTRL + X).

Шаг 4: Проверка работы BoltzTraP2

Теперь, после всех выполненных действий, попытайтесь снова запустить BoltzTraP2:

btp2

Если все выполнено правильно, ошибка, связанная с отсутствием модуля _lzma, должна исчезнуть, и программа должна запуститься корректно.

Итог

Удаление ошибки "no module named ‘_lzma’" требует установки совместимого пакета и модификацию системного файла lzma.py. Этот метод эффективен и позволяет обойти ограничения, связанные с отсутствием нужных модулей в стандартной библиотеке Python. Если возникнут вопросы или проблемы, не стесняйтесь обратиться за дополнительной помощью на технические форумы или к документации вашего программного обеспечения.

Оцените материал
Добавить комментарий

Капча загружается...