отсутствует модуль 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
в исходном коде:
yum install bzip2-devel
wget http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz
tar -zxvf bzip2-1.0.6.tar.gz
cd bzip2-1.0.6
make && make install
настройка и повторная компиляция 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.
вот мое решение:
- yum установить bzip2-devel. (или apt-get)
- скачать командой bzip2-1.0.6. принять && сделать установку ()
- построить 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 любой пакет, который вы установили. А перед этим сделайте резервную папку.