UserWarning:无法导入lzma模块。您安装的Python不完整

sre*_*nth 9 python-3.x

安装Google Cloud Bigquery模块后,如果我将该模块导入python代码。我看到此警告消息。发生在python 3.7.3 Virtualenv中。

尝试重新安装GCP bigquery模块如果我们编写“从google.cloud import bigquery”,则应输入python代码。不会导致任何错误或消息。

import os
import sys
import logging
from datetime import datetime
from google.cloud import bigquery
Run Code Online (Sandbox Code Playgroud)
/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()
Run Code Online (Sandbox Code Playgroud)

小智 32

在 MacOS 和 pyenv ( https://realpython.com/intro-to-pyenv/ ) 上,我可以通过将 xz 与 homebrew 一起安装来消除此警告。以python 3.6.9版本为例

brew install xz && pyenv install 3.6.9

要使用已安装的python,需要将其添加到 .bash_profile

eval "$(pyenv init -)"

并通过运行开始使用它

pyenv global 3.6.9

  • 对于 Mac OS:``brew install readline xz``` <br/> https://github.com/pyenv/pyenv/wiki/Common-build-problems (5认同)

Mik*_*Sam 32

我从这里使用了其他好的答案,但没有解决问题(Ubuntu 18.04、Python3.8),仍然收到此警告。其实还需要安装一个包来解决这个问题:

sudo apt-get install lzma
Run Code Online (Sandbox Code Playgroud)

所以整个管道(在python源代码文件夹中运行):

sudo apt-get install liblzma-dev
sudo apt-get install lzma
./configure --enable-optimizations
sudo make
sudo make altinstall
Run Code Online (Sandbox Code Playgroud)

  • 我的灵魂: sudo apt-get install liblzma-dev sudo apt-get install lzma pyenv install 3.6.6 (重新安装) (2认同)
  • 对于 Ubuntu 18.04,这是有帮助的答案。仅安装 `liblzma-dev` 是不够的 (2认同)

Yin*_*iao 22

在macOS上,如果你用pyenv管理你的python并用homebrew打包,你需要先安装“xz”:

brew install xz
Run Code Online (Sandbox Code Playgroud)

安装xz后,就可以安装python 3.8了(我以3.8.2为例:

pyenv install 3.8.2
Run Code Online (Sandbox Code Playgroud)

以上将解决问题。

  • 这为我解决了! (2认同)

Raf*_*lah 19

如果您正在使用centos并从源代码编译 python,您可以从以下命令安装

对于centos: sudo yum install -y xz-devel

从源代码重新编译python

cd Python-3.8*/
./configure --enable-optimizations
sudo make altinstall
Run Code Online (Sandbox Code Playgroud)

  • 正是我所需要的。 (2认同)

Che*_*glu 15

如果从源代码编译Python,则必须安装该lzma-dev软件包,否则它将不会内置在python中。

对于ubuntu: sudo apt-get install liblzma-dev

对于centos: yum install -y xz-devel

然后 configure && make && make install

  • 我在哪里进行配置和制作? (12认同)
  • @DarwinHarianto,如果您从源代码安装Python,请转到python源代码文件夹并在此处运行命令“./configure && make && make altinstall”。另外我建议使用 `sudo altinstall` 来代替默认的 python 版本。 (6认同)
  • 对于 CENTOS:首先 ```sudo yum install -y xz-devel``` 然后从源代码重新编译 python ```cd Python-3.8*/``` 然后 ```./configure --enable-optimizations`` ` 然后``sudo make altinstall`` (4认同)

小智 9

为我解决了什么:

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/
Run Code Online (Sandbox Code Playgroud)


dwo*_*feu 9

此解决方案适用于我的设置(Apple M1 with pyenv):

CFLAGS="-I$(brew --prefix xz)/include" LDFLAGS="-L$(brew --prefix xz)/lib" pyenv install 3.9.4
Run Code Online (Sandbox Code Playgroud)

  • 这适用于我已经安装的 python 安装 (pyenv)。例如,如果您处于项目中期,则无需再次安装 python。@EgeCan我认为它的作用是告诉操作系统在哪里寻找二进制文件。即,当引用 xz 时,操作系统需要了解 xz。 (2认同)

Ion*_*aca 5

请参阅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"
Run Code Online (Sandbox Code Playgroud)


Nav*_*ala 5

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

这对我有用:

  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。

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