Вопрос или проблема
Я пытаюсь запустить программу 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
. Для этого выполните следующие шаги:
- Перейдите в директорию, где установлен Python. Например, для Python 3.8 выполните команду:
cd /usr/local/lib/python3.8
- Откройте файл
lzma.py
с правами администратора. Вы можете использовать командуnano
, чтобы отредактировать файл:
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
Шаг 3: Сохранение и выход
После внесения изменений сохраните файл (в nano
это делается комбинацией клавиш CTRL + O
, затем нажмите Enter
, чтобы подтвердить), и выйдите из редактора (CTRL + X
).
Шаг 4: Проверка работы BoltzTraP2
Теперь, после всех выполненных действий, попытайтесь снова запустить BoltzTraP2:
btp2
Если все выполнено правильно, ошибка, связанная с отсутствием модуля _lzma
, должна исчезнуть, и программа должна запуститься корректно.
Итог
Удаление ошибки "no module named ‘_lzma’" требует установки совместимого пакета и модификацию системного файла lzma.py
. Этот метод эффективен и позволяет обойти ограничения, связанные с отсутствием нужных модулей в стандартной библиотеке Python. Если возникнут вопросы или проблемы, не стесняйтесь обратиться за дополнительной помощью на технические форумы или к документации вашего программного обеспечения.