web-dev-qa-db-ja.com

欠落python bz2モジュール

ホームディレクトリにインストールしました。

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

python 2.7.xバージョンを必要とする1つのスクリプトを実行しようとしていますが、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
29
Satish

おそらく、ソースから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. 、スクリプトに必要なバージョン。

62
jviotti

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パスがある場合は、それを置き換える必要があります。

8
Mithril

CentOS 7で、bzip2-develをインストールします。

Sudo yum install  bzip2-devel

次に、pythonを再コンパイルします。

5
James Tang

Bz2 cライブラリの開発バージョンがインストールされている必要があります。たぶんそうしないので、Pythonのユーザーコピーをビルドしたときにインストールされなかったのです。 Ubuntuでは、libbz2-devパッケージです。おそらく、Fedoraで同じまたは類似の名前が付けられています。または、www.bzip.orgからダウンロードできます。

3
AFoglia

再インストールする必要があります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をコンパイルすると問題が発生するはずです。このファイルを別のVMからコピーして問題を解決します。

2
lvxiaobo616

CentOS 6でも追加する必要があります。bzip2-develではなくbzip2-libsがインストールされていることを確認してください。

2
trinth

上記のソリューションは、python2.7でbz2の問題を解決できます。しかしpython 3.xええ、_bz2.cpython-3xm-x86_64-linux-gnu.soが必要ですが、独自のenvでビルドする必要があります。

ここに私の解決策があります:

  1. yum install bzip2-devel。 (またはapt-get)
  2. bzip2-1.0.6をダウンロードします。 make && make install()
  3. 次のようにPython3の_bz2.cpythonをビルドします。

python3のソースコードフォルダーにあるvim run.sh: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

プレバージョンと同じプレフィクスを設定できます。これにより、インストールしたパッケージが削除されなくなります。その前に、バックアップフォルダーを作成します。

1
Jingjia Luo

ここに私の解決策があります、ステップ2-6はスキップするかもしれません:

  1. Sudo yum install bzip2-devel

  2. https://github.com/nemequ/bzip2/releases から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. 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 そしてそれを/ [your python path] /lib-dynload/_bz2.cpython-35m-x86_64-linux-に移動しますgnu.so
  7. Sudo ln -s find /usr/lib64/ -type f -name "libbz2.so.1*" /usr/lib64/libbz2.so.1.0クレジット https://michaelheap.com/error-while-loading-shared-libraries-libbz2-so-1-0-cannot-open-shared- object-file-on-centos-7
0
chi doujiao