programing

사용자 경고: lzma 모듈을 가져올 수 없습니다.설치된 Python이 불완전합니다.

lastcode 2023. 5. 22. 21:07
반응형

사용자 경고: lzma 모듈을 가져올 수 없습니다.설치된 Python이 불완전합니다.

Google Cloud Bigquery Module 설치 후 모듈을 python code로 가져오면,이 경고 메시지가 표시됩니다.Python 3.7.3 Virtualenv에서 저에게 일어나는 일입니다.

Google.cloud import bigquery에서 "를 쓰면 GCP bigquery 모듈 Expectation-in 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()

소스에서 Python을 컴파일하는 경우에는lzma-dev패키지가 설치되지 않으면 python에 내장되지 않습니다.

unbuntu의 경우:sudo apt-get install liblzma-dev

센토스의 경우:yum install -y xz-devel

그리고나서configure && make && make install

여기서 다른 좋은 답변을 사용했지만 문제를 해결하지 못했습니다(Ubuntu 18.04, Python 3.8). 여전히 이 경고가 표시됩니다.실제로 이 문제를 해결하려면 패키지를 하나 더 설치해야 합니다.

sudo apt-get install lzma

따라서 전체 파이프라인(파이썬 소스 코드 폴더에서 실행):

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

MacOS와 pyenv(https://realpython.com/intro-to-pyenv/), 에서 저는 홈브루와 함께 xz를 설치함으로써 이 경고를 없앨 수 있었습니다.버전 python 3.6.9를 예로 사용

brew install xz && pyenv install 3.6.9

설치된 파이썬을 사용하려면 이를 에 추가해야 합니다..bash_profile

eval "$(pyenv init -)"

실행하여 사용하기 시작합니다.

pyenv global 3.6.9

macOS에서 pyenv를 사용하여 python을 관리하고 홈브루를 사용하여 패키지를 관리하는 경우 "xz"를 먼저 설치해야 합니다.

brew install xz

xz를 설치한 후 python 3.8을 설치할 수 있습니다(예를 들어 3.8.2를 사용합니다.

pyenv install 3.8.2

위의 내용으로 문제를 해결할 수 있습니다.

이 솔루션*은 제 설정에서 작동했습니다(애플 M1은pyenv):

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

*편집(2023-02-08): 마틴 들릴의 도움이 되는 의견에 따라 링크가 삭제되었습니다.

사용 중인 경우centos소스에서 파이썬을 컴파일하면 다음 명령에서 설치할 수 있습니다.

센토스의 경우:sudo yum install -y xz-devel

소스 코드에서 파이썬 다시 컴파일

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

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/

https://github.com/pandas-dev/pandas/issues/28219 에서 솔루션을 찾았습니다.

방금 도망쳤어요.CPPFLAGS="-I$(brew --prefix xz)/include" pyenv install 3.10.0

  • OS: 몬테레이
  • M1 칩
  • 파이엔브
  • python 3.10.0

했다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"

저는 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. 소스에서 파이썬을 다시 빌드했습니다.

저는 다시는 경고를 받지 않았고 전혀 문제가 없었습니다.

나도 그것을 알아.

yum install -y lzma

또한 오류 없이 실행됩니다.

운영체:CentOS 8.X

아래의 실행 명령을 단계별로 수행한 다음 문제를 해결합니다.

  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

"xz"와 "lzma"가 무엇인지에 대한 정보를 제공하고 싶습니다.

man xz:

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/ 에는 Gziped 소스 tarball에 비해 XZ 압축 소스 tarball이 있습니다.

그래서 만약 당신이 처리할 필요가 없다면..xz판다 파일은 그냥 경고를 무시하고 계속 진행할 수 있습니다.그렇지 않으면 python을 다시 설치해야 하며 이미 시스템에 lzma 라이브러리가 설치되어 있습니다.lzma 라이브러리의 패키지 이름은 배포자/OS에 따라 다릅니다.예를 들어, Mac에서는xz그리고 우분투 그것은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

1단계:sudo apt-get install liblzma-dev

2단계:pyenv install <python_version>버전이 이미 설치되어 있는지 확인하는 메시지가 표시됩니다(예).이렇게 하면 이번에는 "완전하게" 다시 설치됩니다.

언급URL : https://stackoverflow.com/questions/57743230/userwarning-could-not-import-the-lzma-module-your-installed-python-is-incomple

반응형