報(bào)錯(cuò)情景
在基于centos的鏡像的容器中.python程序import pandas會(huì)import bz2,報(bào)錯(cuò)信息:
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相關(guān)庫(kù)(但是我記得我裝過(guò)了), 缺了哪些選擇安裝
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里有l(wèi)ibbz2.so
最后在/usr/local/python3/lib/python3.6/lib-dynload/得到一個(gè)_bz2.cpython-36m-x86_64-linux-gnu.so
然后import pandas會(huì)有警告
>>> 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
進(jìn)入/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