В python3 нет модуля с именем _bz2

При попытке выполнить следующую команду:

импортировать matplotlib.pyplot как plt

Возникает следующая ошибка:

из _bz2 import BZ2Compressor, BZ2Decompressor ImportError: Нет модуля с именем _bz2

Итак, я пытался установить модуль bzip2 в Ubuntu, используя:

sudo pip3 установить bzip2

Но в терминале появляется следующее утверждение:

Не удалось найти версию, которая удовлетворяет требованию bzip2 (из версий:) Не найдено соответствующего распределения для bzip2

Что я могу сделать, чтобы решить проблему?

7 ответов

Если вы сами компилируете python, вам сначала нужно установить заголовочные файлы libbz2 и файлы.so, так что python будет скомпилирован с поддержкой bz2.

На убунту, apt-get install libbz2-dev затем скомпилируйте python.

Я нашел закономерность в этих проблемах.

В основном это происходит, если вам не хватает инструментов разработчика и других важных библиотек, важных для компиляции кода и установки Python.

Для меня большинство из этих шагов не сработало. Но мне пришлось сделать следующее:

  • Удалить мою установку Python

pyenv uninstall python_version

  • Затем установите все инструменты сборки, чтобы убедиться, что я ничего не пропустил.

sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \ libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \ xz-utils tk-dev libffi-dev liblzma-dev python-openssl git

  • Переустановите новую версию Python

pyenv install python_version

Надеюсь, это решит ваши проблемы.

В моем случае я получил ошибку при импорте Pandas. Установка Python 3.9 решила эту проблему.

Моя версия python была 3.8.6. Я использую Pyenv и запускаю MacOS Big Sur.

Ошибка

      $ python
Python 3.8.6 (default, Nov 21 2020, 02:39:42)
[Clang 12.0.0 (clang-1200.0.32.27)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas as pd
Traceback (most recent call last):
...
    from _bz2 import BZ2Compressor, BZ2Decompressor
ModuleNotFoundError: No module named '_bz2'

установлена ​​3.9.1

      $ pyenv install --list
$ pyenv install 3.9.1
$ pyenv local 3.9.1
$ pyenv global 3.9.1
$ pip install pandas

Очередной раз

      $  python
Python 3.9.1 (default, Jul  5 2021, 22:26:09)
[Clang 12.0.5 (clang-1205.0.22.11)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas as pd
>>>

Я столкнулся с той же ошибкой в ​​RHEL 7.9 с собственной версией Python (скомпилированной с нуля).

      [lsaavedr@boxer ~]$ python3
Python 3.6.8 (default, Mar  7 2022, 12:20:27)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import bz2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.6/bz2.py", line 23, in <module>
    from _bz2 import BZ2Compressor, BZ2Decompressor

И я решил либо скопировать, либо /symlink/ общую библиотеку bz2 в дерево каталогов python3:

      [root@boxer python3.6]# pwd
/usr/local/lib/python3.6
[root@boxer python3.6]# ln -s ../../../lib64/python3.6/lib-dynload/_bz2.cpython-36m-x86_64-linux-gnu.so
[root@boxer python3.6]# rpm -qf ../../../lib64/python3.6/lib-dynload/_bz2.cpython-36m-x86_64-linux-gnu.so
python3-libs-3.6.8-19.el7_9.x86_64

Тогда bz2 работает нормально:

      [lsaavedr@boxer ~]$ python3
Python 3.6.8 (default, Mar  7 2022, 12:20:27)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import bz2
>>> data = b"""All in all, it's just another brick in the wall"""
>>> c = bz2.compress(data)
>>> c
b'BZh91AY&SY\xc5\xd1nL\x00\x00\x05\x95\x80@\x84 \x00:}\x9e\x80 \x001L&\x9a\x03LA\xa8\x06\x86\x86\xd4i\xbe\x96d\xed\xb6\x96\x17x\x82EB\xd0\x02\x90\xe3\x0b\x88\xaa\x92\xec\x8a\xef/\x8b\xb9"\x9c(Hb\xe8\xb7&\x00'
>>> d = bz2.decompress(c)
>>> d
b"All in all, it's just another brick in the wall"

наконец, я исправляю эти проблемы в centos с помощью python3.9, когда все не работает,

  1. мы можем скачать файл:_bz2.cpython-38-x86_64-linux-gnu.so.

скачивает этот файл: https://pan.baidu.com/s/1iPuEBYnUABWf94QM9fQZgQ提取码: nw2g

  1. затем переименовывает файл, потому что я использую python3.9, это файл python3.8:

    cp _bz2.cpython-38-x86_64-linux-gnu.so /usr/local/python3/lib/python3.9/lib-dynload/

  2. Измените права доступа к файлу, если он не работает

chmod + x _bz2.cpython-38-x86_64-linux-gnu.so

  1. если он сообщит ImportError: libbz2.so.1.0: cannot open shared object file: No such file or directory, мы должны убедиться, что bzip установлен. использовать: yum install -y bzip2*. затем выполнить ln -s /usr/lib64/libbz2.so.1 /usr/lib64/libbz2.so.1.0. выполнять python3 -c 'import _bz2', может нормально работать !!!

я ищу с https://www.jianshu.com/p/b722adc2ba52 .

Использование pyenv

      sudo apt-get install libbz2-dev
python --version
pyenv install version

если sudo apt-get install libbz2-dev не имеет смысла, вы можете попробовать

      sudo ln -s /usr/lib/python3.6/lib-dynload/_bz2.cpython-36m-x86_64-linux-gnu.so /usr/local/lib/python3.8/lib-dynload/_bz2.cpython-38-x86_64-linux-gnu.so
Другие вопросы по тегам