ホームディレクトリにインストールしました。
[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
おそらく、ソースから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. 、スクリプトに必要なバージョン。
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をコンパイルすると問題が発生するはずです。このファイルを別のVMからコピーして問題を解決します。
CentOS 6でも追加する必要があります。bzip2-devel
ではなくbzip2-libs
がインストールされていることを確認してください。
上記のソリューションは、python2.7でbz2の問題を解決できます。しかしpython 3.xええ、_bz2.cpython-3xm-x86_64-linux-gnu.soが必要ですが、独自のenvでビルドする必要があります。
ここに私の解決策があります:
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
プレバージョンと同じプレフィクスを設定できます。これにより、インストールしたパッケージが削除されなくなります。その前に、バックアップフォルダーを作成します。
ここに私の解決策があります、ステップ2-6はスキップするかもしれません:
Sudo yum install bzip2-devel
https://github.com/nemequ/bzip2/releases からbzip2-1.0.6.tar.gzをダウンロードします
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