最近用 Python 的 Flask 框架开发了一个内部使用的平台,其中用到了 Pandas 来解析 Excel 内容实现一个文件导入的效果,在test环境没问题,结果到了线上 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.

看了下 test 环境的 Python 版本是 Python 3.8.5,线上的却是 Python 3.6.4,肯定是 Python 版本不一致导致的问题,暂时先不管版本,解决问题先。

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

执行以上安装命令,我在最后 install backports.lzma的时候,提示我 WARNING: Running pip as root will break packages and permissions. You should install packages reliably by using venv: https://pip.pypa.io/warnings/venv,那没办法咯,照着提示来,因为我用的是 root 账户,切换了下账户,重新执行了pip install backports.lzma,即可。

安装完并不代表问题解决啦,还需要找到 lzma.py 进行修改, 我的目录是在 /usr/local/python3/lib/python3.6/ 下面,修改如下:

from _lzma import *
from _lzma import _encode_filter_properties, _decode_filter_properties

将其改为

try:
    from _lzma import *
    from _lzma import _encode_filter_properties, _decode_filter_properties
except:
    from backports.lzma import *
    from backports.lzma import _encode_filter_properties, _decode_filter_properties

大功告成,这个时候执行 import pandas 就没有任何报错啦!


附安装 pandas 的命令

pip install xlrd
pip install openpyxl
pip install pandas
最后修改:2021 年 06 月 23 日 05 : 47 PM
如果觉得我的文章对你有用,请随意赞赏