Centos bz2报错

报错情景

在基于centos的镜像的容器中.python程序import pandas会import bz2,报错信息:

  File "/usr/local/python3/lib/python3.6/site-packages/pandas/io/common.py", line 3, in <module>
    import bz2
  File "/usr/local/python3/lib/python3.6/bz2.py", line 23, in <module>
    from _bz2 import BZ2Compressor, BZ2Decompressor
ModuleNotFoundError: No module named '_bz2'

解决办法:

安装zlib跟bz2相关库(但是我记得我装过了), 缺了哪些选择安装

RUN yum -y install zlib bzip2 zlib-devel bzip2-devel libffi-devel openssl openssl-devel ncurses-devel sqlite sqlite-devel readline-devel tk-devel gcc make wget mesa-libGL.x86_64 lzma ncurses xz xz-devel gdbm gdbm-devel tk tk-devel

重新编译

RUN cd /usr/local/python3/Python-3.6.9 && make distclean && ./configure --prefix=/usr/local/python3 --enable-optimizations  && make && make install

其中/usr/include里有bzlib.h,/usr/lib64里有libbz2.so

最后在/usr/local/python3/lib/python3.6/lib-dynload/得到一个_bz2.cpython-36m-x86_64-linux-gnu.so

然后import pandas会有警告

>>> import pandas
/usr/local/python3/lib/python3.6/site-packages/pandas/compat/__init__.py:120: UserWarning: Could not import the lzma module. Your installed Python is incomplete. Attempting to use lzma compression will result in a RuntimeError.
  warnings.warn(msg)

安装

yum install -y xz-devel python-backports-lzma
pip install backports.lzma

进入/usr/local/python3/lib/python3.6/lzma.py

line27行修改如何下:

try:
    from _lzma import *
    from _lzma import _encode_filter_properties, _decode_filter_properties
except ImportError:
    from backports.lzma import *
    from backports.lzma import _encode_filter_properties, _decode_filter_properties
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容