отсутствует модуль python bz2

Я установил в своем домашнем каталоге.

[spatel@~ dev1]$ /home/spatel/python-2.7.3/bin/python -V
Python 2.7.3

Я пытаюсь запустить один скрипт, который требовал python 2.7.X версия, и я получаю отсутствует ошибка bz2

[spatel@~ dev1]$ ./import_logs.py
Traceback (most recent call last):
  File "./import_logs.py", line 13, in <module>
    import bz2
ImportError: No module named bz2

Я попытался установить модуль bz2, но я получил много ошибок

 [spatel@dev1 python-bz2-1.1]$ /home/spatel/python-2.7.3/bin/python setup.py install
    ...
    ...
    ...
    bz2.c:1765: error: âBZ_FINISH_OKâ undeclared (first use in this function)
    bz2.c:1765: warning: comparison between pointer and integer
    bz2.c:1771: error: âPyMemberDefâ has no member named âavail_outâ
    bz2.c:1778: error: âPyMemberDefâ has no member named ânext_outâ
    bz2.c:1778: error: âPyMemberDefâ has no member named âtotal_out_hi32â
    bz2.c:1778: error: âPyMemberDefâ has no member named âtotal_out_lo32â
    bz2.c:1778: error: invalid operands to binary +
    bz2.c:1778: warning: statement with no effect
    bz2.c:1779: error: âPyMemberDefâ has no member named âavail_outâ
    bz2.c:1779: error: âPyMemberDefâ has no member named ânext_outâ
    bz2.c:1779: error: invalid operands to binary -
    bz2.c:1779: error: invalid operands to binary -
    bz2.c:1779: warning: statement with no effect
    bz2.c:1783: error: âPyMemberDefâ has no member named âavail_outâ
    bz2.c:1784: error: âPyMemberDefâ has no member named âtotal_out_hi32â
    bz2.c:1784: error: âPyMemberDefâ has no member named âtotal_out_lo32â
    bz2.c:1784: warning: passing argument 2 of â_PyString_Resizeâ makes integer from pointer without a cast
    error: command 'gcc' failed with exit status 1

7 ответов


вероятно, поскольку вы создали python из исходного кода, у вас нет заголовков bz2.

установите их на Ubuntu / Debian:

sudo apt-get install libbz2-dev

Fedora:

sudo yum install bzip2-devel 

и снова создайте python. Вы можете заметить, что python проверяет множество библиотек при настройке/создании, Если вы пропустите некоторые из них, вы, вероятно, не получите поддержки для таких библиотек, как bz2 в вашем случае.

вы должны получить готовые двоичные файлы, чтобы избежать такого рода вещей. В Ubuntu 12.04 пакеты python 2.7.3 версия вашего сценария.


если вы устанавливаете python в определенном месте, просто установите libbz2-dev не будет работать.

существует обходной путь для centos:

  • в CentOS 6

    sudo cp /usr/lib64/python2.6/lib-dynload/bz2.so /python_install_path/lib/python2.7
    
  • в CentOS 7

    sudo cp /usr/lib64/python2.7/lib-dynload/bz2.so /python_install_path/lib/python2.7
    

python_install_path обычно /usr/local/lib/python2.7/, вам нужно будет заменить это, если у вас есть пользовательский путь python.


на CentOS 7 Установите bzip2-devel:

sudo yum install  bzip2-devel

затем повторно скомпилируйте python.


вам необходимо установить версию разработки библиотеки bz2 c. Вы, вероятно, не знаете, и поэтому он не был установлен, когда вы создали свою пользовательскую копию python. На Ubuntu это пакет libbz2-dev. Вероятно, он назван так же или похож на Fedora. Или вы можете скачать его с www.bzip.org.


необходимо переустановить bzip2 в исходном коде:

  1. yum install bzip2-devel

  2. wget http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz

  3. tar -zxvf bzip2-1.0.6.tar.gz

  4. cd bzip2-1.0.6

  5. make && make install

  6. настройка и повторная компиляция python

эти шаги работают иногда.

наконец, я понял проблему, она нуждается в /usr/local/Python-3.5.2/lib/python3.5/lib-dynload/_bz2.cpython-35m-x86_64-linux-gnu.so, у него должна быть проблема при компиляции bzip2 исходным кодом. Я копирую этот файл с другой виртуальной машины, чтобы решить проблему.


Я также должен добавить, что на CentOS 6, убедитесь, что у вас есть bzip2-devel, а не bzip2-libs установлен.


решение выше может решить проблемы bz2 с python2.7. но не python 3.икс да, тебе нужен _bz2.cpython-3xm-x86_64-linux-gnu.Итак, однако вы должны построить его в своем собственном env.

вот мое решение:

  1. yum установить bzip2-devel. (или apt-get)
  2. скачать командой bzip2-1.0.6. принять && сделать установку ()
  3. построить Python3 в _bz2.cpython вот так:

vim run.sh под исходным кодом python3 папка: Python-3.х.х

export CFLAGS="-I/usr/include"
export LDFLAGS="-L/usr/lib64"
export LD_LIBRARY_PATH=/usr/lib64
make distclean
./configure --prefix=/home/xxx/Python3 && make && make install

вы можете установить префикс же вашей предварительной версии, что не будет uninstrall любой пакет, который вы установили. А перед этим сделайте резервную папку.