81

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

[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
4

16 に答える 16

132

おそらく、ソースから python をビルドしたため、bz2 ヘッダーがありません。

それらを Ubuntu/Debian にインストールします。

sudo apt-get install libbz2-dev

フェドーラ:

sudo yum install bzip2-devel 

そして、再度 python をビルドします。構成/ビルド時に python が多くのライブラリをチェックすることに気付くかもしれませんが、それらのいくつかを見逃すと、おそらくあなたのケースでは bz2 のようなライブラリがサポートされなくなります。

この種のものを避けるために、ビルド前のバイナリを入手する必要があります。Ubuntu 12.04は、スクリプトが必要とするバージョンであるpython 2.7.3をパックします。

于 2012-10-09T18:39:32.103 に答える
11

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

sudo yum install  bzip2-devel

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

于 2015-04-05T07:36:45.987 に答える
8

Pythonで特定の場所にインストールすると、インストールだけでlibbz2-devは機能しません。

centos の回避策があります。

  • セントス6

    sudo cp /usr/lib64/python2.6/lib-dynload/bz2.so /python_install_path/lib/python2.7
    
  • セントス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 パスがある場合は、それを置き換える必要があります。

于 2016-11-22T05:46:47.293 に答える
4

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 からコピーします。

于 2016-11-07T11:57:56.157 に答える
3

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

于 2012-10-09T18:39:42.983 に答える
3

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

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

  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.xx

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

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

于 2017-12-18T11:32:25.343 に答える
1

Python別の場所からインストールするときにもこの問題が発生します(私はPython 3.7.5on を使用しますCentos 7)。

これが機能するようにする手順は次のとおりです。

  1. 環境変数のエクスポート
export PATH=<YOUR_PYTHON_PATH>/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
export PYTHONPATH=<YOUR_PYTHON_PATH>/lib/python3.7/site-packages
export LD_RUN_PATH=/usr/local/lib:/usr/lib64
export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib64
export CFLAGS="-I/usr/include"
export LDFLAGS="-L/usr/lib64"
  1. bzip2-devel をインストールする
yum install -y bzip2-devel
  1. bzip2 をダウンロードしてコンパイルする
wget/curl <bzip2_url>
make
make install

これにより、ファイルをダウンロードする必要がなくなり_bz2.cpython-35m-x86_64-linux-gnu.soます。

于 2020-04-25T16:19:53.400 に答える
1

以下のように修正しました

  1. # sudo find / -name '*_bz2*'

検索結果サンプル:</p>

/usr/lib64/python3.6/lib-dynload/_bz2.cpython-36m-x86_64-linux-gnu.so

  1. # sudo cp /usr/lib64/python3.6/lib-dynload/_bz2.cpython-36m-x86_64-linux-gnu.so /usr/local/python3.8.5/lib/python3.8/lib-dynload
  2. sudo mv _bz2.cpython-36m-x86_64-linux-gnu.so _bz2.cpython-38-x86_64-linux-gnu.so

Python が3.7の場合、ファイル名を から36mに変更する必要があります37m

于 2022-01-21T12:58:28.927 に答える