Отсутствует модуль python bz2
Я установил в своем домашнем каталоге.
[[email protected]~ dev1]$ /home/spatel/python-2.7.3/bin/python -V
Python 2.7.3
Я пытаюсь запустить один script, который требует версию python 2.7.x, и я получаю ошибку bz2
[[email protected]~ 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, но у меня появилось много ошибок
[[email protected] 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
Ответы
Ответ 1
Вероятно, когда вы создали 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, вам нужна ваша версия script.
Ответ 2
Если вы устанавливаете python в определенном месте, просто установите libbz2-dev
не получится.
Существует обходное решение для centos:
python_install_path
обычно /usr/local/lib/python2.7/
, вам потребуется заменить его, если у вас есть пользовательский путь python.
Ответ 3
В CentOS 7 установите bzip2-devel:
sudo yum install bzip2-devel
Затем перекомпилируйте python.
Ответ 4
У вас должна быть установлена версия библиотеки bz2 c. Вероятно, вы этого не сделали и почему он не был установлен, когда вы создали свою пользовательскую копию python. На Ubuntu это пакет libbz2-dev. Вероятно, он назвал тот же или похожий на Fedora. Или вы можете скачать его с www.bzip.org.
Ответ 5
Вы должны переустановить 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 по исходному коду. Я копирую этот файл из другой виртуальной машины, чтобы решить проблему.
Ответ 6
Я также должен добавить, что на CentOS 6 убедитесь, что у вас установлен bzip2-devel
, а не bzip2-libs
.
Ответ 7
решение выше может решить проблемы bz2 с python2.7. но не python 3.x
да, вам нужно _bz2.cpython-3xm-x86_64-linux-gnu.so, однако вы должны создать его в своем собственном env.
здесь мое решение:
- yum install bzip2-devel. (или apt-get)
- скачать bzip2-1.0.6. make && make install()
- создайте Python3 _bz2.cpython следующим образом:
vim run.sh под папкой исходного кода python3: Python-3.x.x
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
вы можете установить префикс так же, как и в своей предварительной версии, что не приведет к отключению любого установленного вами пакета. Перед этим создайте резервную папку.
Ответ 8
вот мое решение, шаг 2-6 может пропустить:
-
sudo yum установить bzip2-devel
-
загрузите bzip2-1.0.6.tar.gz с веб-сайта https://github.com/nemequ/bzip2/releases.
- tar -zxvf bzip2-1.0.6.tar.gz
- cd bzip2-1.0.6
- make && make install
- загрузить файл с https://github.com/Imaginashion/ccdev-vision/blob/master/.fr-d0BNfn/django-jquery-file-upload/venv/lib/python3.5/lib-dynload/_bz2.cpython- 35m-x86_64-linux-gnu.so и переместите его в/[ваш путь к питону]/lib-dynload/_bz2.cpython-35m-x86_64-linux-gnu.so
- sudo ln -s
find/usr/lib64 / -type f -name "libbz2.so.1*"
/usr/lib64/libbz2.so.1.0 предоставлен https://michaelheap.com/error- find/usr/lib64 / -type f -name "libbz2.so.1*"
загрузка -s Харед-библиотеки-libbz2 -s о-1-0-не может открыть -s Харед-объект файл-на-CentOS-7