用户警告: 无法导入 lzma 模块。您安装的 Python 不完整

安装完 Google Cloud Bigquery 模块后,如果我将该模块导入到 python 代码中。我看到了这条警告信息。我在 python 3.7.3 Virtualenv 中也遇到过这种情况。

尝试重新安装 GCP 大查询模块 如果我们写“ from google.cloud import bigquery”,则在 python 代码中应该不会导致任何错误或消息。

import os
import sys
import logging
from datetime import datetime
from google.cloud import bigquery
/home/informatica/.local/lib/python3.7/site-packages/pandas/compat/__init__.py:84: 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)
exit()
163651 次浏览

如果从源代码编译 Python,则必须安装 lzma-dev包,否则将不会将其构建到 Python 中。

For ubuntu: sudo apt-get install liblzma-dev

For centos: yum install -y xz-devel

然后是 configure && make && make install

在 MacOS 和 pyenv (https://realpython.com/intro-to-pyenv/)上,通过使用自制程序安装 xz,我可以消除这个警告。以 python 3.6.9版本为例

brew install xz && pyenv install 3.6.9

To use installed python, one needs to add this into .bash_profile

eval "$(pyenv init -)"

并开始使用它通过运行

pyenv global 3.6.9

If you are using centos and compile python from source, you can install from following commands

片段: sudo yum install -y xz-devel

Recompile python from source code

cd Python-3.8*/
./configure --enable-optimizations
sudo make altinstall

在 macOS 上,如果你使用 pyenv 来管理你的 python,并使用自制程序来打包,你需要首先安装“ xz”:

brew install xz

在安装 xz 之后,您可以安装 python 3.8 by (我使用3.8.2作为示例:

pyenv install 3.8.2

以上将解决这个问题。

我从这里使用了其他好的答案,没有解决问题(Ubuntu 18.04,Python 3.8) ,仍然得到这个警告。 实际上,还需要安装一个软件包来解决这个问题:

sudo apt-get install lzma

因此,整个管道(在 python 源代码文件夹中运行) :

sudo apt-get install liblzma-dev
sudo apt-get install lzma
./configure --enable-optimizations
sudo make
sudo make altinstall

我做了 brew install xz和重新安装一切,但这并不适合我。

帮助我的是为 xz 添加了正确的链接:


export LDFLAGS="-L$(brew --prefix xz)/lib -L$(brew --prefix readline)/lib -L$(brew --prefix zlib)/lib"
export CPPFLAGS="-I$(brew --prefix xz)/include  -I$(brew --prefix readline)/include -I$(brew --prefix zlib)/include -I$(xcrun --show-sdk-path)/usr/include"

请参阅 https://github.com/pandas-dev/pandas/issues/27532上的最后一条评论

brew install xz # To pick up liblzma
prefix=$(brew --prefix)
export LDFLAGS="-L$prefix/opt/xz/lib $LDFLAGS"
export CPPFLAGS="-I$prefix/opt/xz/include $CPPFLAGS"
export PKG_CONFIG_PATH="$prefix/opt/xz/lib/pkgconfig:$PKG_CONFIG_PATH"
# YOU CANNOT HAVE THE GNUBINS in your PATH when you run this
PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install 3.9.2
python3 -c "import lzma" # should work and not throw "cannot import _lzma"

我的答案是:

sudo apt-get install libbz2-dev
sudo cp /usr/lib/python3.8/lib-dynload/_bz2.cpython-38-x86_64-linux-gnu.so/usr/local/lib/python3.8/
sudo cp /usr/lib/python3.8/lib-dynload/_lzma.cpython-38-x86_64-linux-gnu.so /usr/local/lib/python3.8/

这个解决方案 适用于我的设置(Apple M1和 pyenv) :

CFLAGS="-I$(brew --prefix xz)/include" LDFLAGS="-L$(brew --prefix xz)/lib" pyenv install 3.9.4

我在 Debian 10上从源代码构建了 Python 3.8,有时根本无法启动 mlflow 服务器,有时会收到警告,尽管成功启动,而且每个熊猫导入都给了我这个警告。

以下是对我有效的方法:

  1. 清除现有的安装。
  2. 做了 sudo apt install libncurses-dev libgdbm-dev libz-dev tk-dev libsqlite3-dev libreadline-dev liblzma-dev libffi-dev libssl-dev
  3. 再次从源代码构建 python。

我再也没有得到警告,也没有任何问题。

我看到了

yum install -y lzma

也运行没有错误。

我的操作系统是: CentOS 8.X

Step to step run command below, then fix the problem:

  1. sudo yum install -y xz-devel
  2. cd Python-3.8.5
  3. sudo ./configure --prefix=/usr/local/python3.8.5 --enable-optimizations --with-ssl
  4. sudo make
  5. sudo make install

我从 https://github.com/pandas-dev/pandas/issues/28219中找到了解决方案

我刚跑了: CPPFLAGS="-I$(brew --prefix xz)/include" pyenv install 3.10.0

  • 操作系统: 蒙特雷
  • M1 chip
  • Penenv
  • Python 3.10.0

我想提供一些关于“ xz”和“ lzma”是什么的信息。

返回文章页面

Xz,unxz,xzcat,lzma,unlzma,lzcat-压缩或解压缩. xz 和. lzma 文件

Https://www.nongnu.org/lzip/xz_inadequate.html

Xz 是一种容器格式,目前包含另一种容器格式(LZMA2) ,后者又包含 LZMA 数据和未压缩数据的混合格式。

据我所知,lzma是一种压缩算法,而 xz是文件格式。

例如,在 https://www.python.org/downloads/release/python-3106/上,压缩源代码压缩包压缩源代码 tarball相比。

因此,如果你不需要处理与熊猫 .xz文件,你可以只是忽略警告,继续前进。否则,您需要 重新安装 python,并且您已经在系统中安装了 lzma 库。Lzma 库的包名在不同的发行版/操作系统中有所不同。例如,在 Mac 上它是 xz,而 ubuntu 是 liblzma-dev

参见:

Https://pandas.pydata.org/pandas-docs/dev/whatsnew/v0.25.1.html#io-and-lzma

Https://github.com/pandas-dev/pandas/blob/b5958ee1999e9aead1938c0bba2b674378807b3d/pandas/_testing.py#l245

Lzma vs zlib:

Https://joblib.readthedocs.io/en/latest/auto_examples/compressors_comparison.html