pip 설치에서“Failed building wheel for X”의 의미는 무엇입니까?


122

이것은 SO에서 진정으로 인기있는 질문이지만 내가 본 많은 답변 중이 오류가 실제로 무엇을 의미하고 왜 발생하는지 명확하게 설명하지 않습니다.

혼동의 원인 중 하나는 (예를 들어) 수행 pip install pycparser하면 먼저 오류가 발생한다는 것입니다.

Failed building wheel for pycparser

그 다음에는 패키지가 다음과 같다는 메시지가 나옵니다.

Successfully installed pycparser-2.19.


# pip3 install pycparser

Collecting pycparser
  Using cached https://files.pythonhosted.org/packages/68/9e/49196946aee219aead1290e00d1e7fdeab8567783e83e1b9ab5585e6206a/pycparser-2.19.tar.gz
Building wheels for collected packages: pycparser
  Running setup.py bdist_wheel for pycparser ... error
  Complete output from command /usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-g_v28hpp/pycparser/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/pip-wheel-__w_f6p0 --python-tag cp36:
  Traceback (most recent call last):
    File "<string>", line 1, in <module>
    ...
    File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2349, in resolve
      module = __import__(self.module_name, fromlist=['__name__'], level=0)
  ModuleNotFoundError: No module named 'wheel.bdist_wheel'

  ----------------------------------------
  Failed building wheel for pycparser
  Running setup.py clean for pycparser
Failed to build pycparser
Installing collected packages: pycparser
  Running setup.py install for pycparser ... done
Successfully installed pycparser-2.19

여기서 무슨 일이 일어나고 있습니까?

(어떻게 실패 할 수 있지만 여전히 설치되는지 이해하고이 패키지가 올바르게 작동한다고 믿을 수 있는지 알고 싶습니다.)

지금까지 내가 찾은 최고의 부분 설명은 이것 입니다.


8
pip요구 사항에 대한 바퀴를 찾을 수없는, 그것은 소스 DIST를 다운로드하고 로컬에서 바퀴를 구축하려고합니다. 성공하면 휠은 pip향후 재설치를 위해의 캐시에 저장됩니다 . 휠 빌드 실패시 pip소스 dist에서 레거시 설치로 전환합니다 (를 호출 python setup.py install).
hoefling

귀하의 경우 wheel패키지 가 누락 pip되어 소스 dists에서 휠을 만들 수 없습니다. 건물 바퀴를 명시 적으로 비활성화하려면 --no-binary플래그를 사용하십시오 pip install somepkg --no-binary=somepkg.. 또는을 사용 pip install somepkg --no-binary=:all:하되 종속성을 포함하여 설치를 위해 선택한 모든 패키지에 대해 휠이 비활성화된다는 점에 유의하십시오. pip설치해야하는 일부 패키지에 사용할 수있는 소스 dist가 없으면 설치가 실패합니다.
hoefling

2
@hoefling : 귀하의 첫 번째 의견이 진정한 이유였으며 답변이 될 수 있습니다. 두 번째는 잘못되었습니다. --no-binarypip에게 소스 배포판 만 다운로드 하고 사용 하도록 지시 합니다. 로컬 바이너리 휠을 만드는 것을 막는 플래그는 실제로 --no-cache-dir입니다.
Serge Ballesta

@hoefling wheels(0.32.2)가 있으므로 문제가 아닙니다. 하지만 pycparser패키지에 휠 ( *.whl)이 연결되어 있지 않을 수도 있습니다 . 하지만이 선제 적을 어떻게 확인할 수 있습니까?
not2qubit

1
pypi.org/project/pycparser 에서 PyPI 사이트를 참조한 다음 파일 을 요청할 수 있습니다 . 그러면 .tar.gz파일 만 있고 PyPI의 소스 배포판 임을 알 수 있습니다 (휠에는 .whl확장자가 있음)
Serge Ballesta

답변:


99

(여기 핍 관리자!)

패키지가 바퀴가 아니면 pip는 바퀴를 만들려고합니다 (를 통해 setup.py bdist_wheel). 어떤 이유로 든 실패하면 "파이크 파서 빌드 실패"메시지가 표시되고 pip는 직접 설치 (setup.py install )로 .

바퀴가 있으면 pip는 올바르게 포장을 풀어 바퀴를 설치할 수 있습니다. pip는 가능한 한 자주 바퀴를 통해 패키지를 설치하려고합니다. 이는 휠 사용의 다양한 이점 (예 : 빠른 설치, 캐시 가능, 코드를 다시 실행하지 않음 등) 때문입니다.


여기서 오류 메시지 wheel는 .NET에서 휠을 빌드하는 데 필요한 로직이 포함 된 패키지가 누락 되었기 때문 입니다 setup.py bdist_wheel. ( pip install wheel고칠 수 있습니다.)


위는 현재 기본값 인 레거시 동작입니다. 향후 언젠가는 기본적으로 PEP 517로 전환하여이를위한 표준 기반 프로세스로 이동할 것입니다. 이를 위해 격리 된 빌드도 있으므로 기본적으로 해당 환경에 휠이 설치되어있을 것입니다. :)


1
OP 작성 당시 이미 wheel패키지가 설치되어 있습니다. 또한 PEP517에 대한 링크를 추가하십시오.
not2qubit

이전 버전의 setuptools 또는 wheel이 설치되어 있습니까? 그렇지 않다면 그것이 실패한 이유처럼 보입니다. 어쨌든 pip의 POV에서 휠을 만들지 못해 정상적으로 설치됩니다.
pradyunsg

휠 생성 ( setup.py bdist_wheel) 을 건너 뛰고 설치 ( setup.py install) 만 수행 하는 방법이 있습니까?
K3 --- rnc

53

어제 동일한 오류가 발생했습니다. Failed building wheel for hddfancontrolwhen I run pip3 install hddfancontrol. 결과는 Failed to build hddfancontrol. 원인은 error: invalid command 'bdist_wheel'Running setup.py bdist_wheel for hddfancontrol ... error입니다. 다음을 실행하여 오류가 수정되었습니다.

 pip3 install wheel

( 여기에서 .)

또는 여기 에서 직접 "휠"을 다운로드 할 수 있습니다 . 다운로드하면 다음을 실행하여 설치할 수 있습니다.

pip3 install "/the/file_path/to/wheel-0.32.3-py2.py3-none-any.whl"

pip3 install wheel'python3 -m venv'내부에서도 훌륭하게 작동했습니다. 오늘부터 저는 venv를 처음 사용합니다
Manohar Reddy Poreddy

2
휠을 설치 한 후에도 작동하지 않습니다!
vatsalay

36

아무도 이것을 따로 언급하지 않는 것 같습니다. 위의 문제에 대한 나만의 해결책은 다음을 사용하여 캐시 된 사본 을 비활성화하는 것 pip install <package> --no-cache-dir입니다.


1
메시지를 제거하는 것이 목표 인 경우 수정으로 간주 될 수 있으며 그렇지 않으면 해결 방법이라고합니다.
Nils Magnus 19

@NilsMagnus입니다 하지 단지 getting rid of the message는 설치 프로그램이 이미 인해 이전과 종종 실패 업데이트에서 캐시 디렉토리에 포함 된 잔류 물에 업데이트되어 있다고 생각하는 경우에도 계속 설치할 수있게된다.
not2qubit

^^ , 말했다 나는 이것이 기본 동작되지 않는 이유 궁금 계속? 업데이트 할 때 누가 캐시 된 사본을 보관 하시겠습니까? 말이 안 돼요
not2qubit

4
그 질문에 대한 대답은 어떻습니까? 질문에 대한 답이 아닙니다.
PascalIv

1
그가 직접 물어보고 대답했기 때문입니다. 이런 식으로 그는 내가 믿는 자신의 대답을 받아 들일 수 있다고 생각합니다. 이상하게 들리지만 그럴 수도 있습니다.
Amit Amola

4

패키지 배포 관점에서이 질문을 해결하는 것이 도움이 될 수 있습니다.

PyPi에 패키지를 게시하는 방법을 설명하는 많은 자습서가 있습니다. 아래는 내가 사용한 몇 가지입니다.

중간
진짜 파이썬

내 경험에 따르면 이러한 튜토리얼의 대부분은 휠이 아닌 소스의 .tar 만 사용합니다. 따라서이 튜토리얼을 사용하여 만든 패키지를 설치할 때 "Failed to build wheel"오류가 표시됩니다.

나중에 PyPi에서 Python Software Foundation의 문서 PSF Docs 에 대한 링크를 찾았습니다 . 나는 그들의 설정 및 빌드 프로세스가 약간 다르며 실제로 휠 파일 빌드를 포함한다는 것을 발견했습니다.

공식적으로 문서화 된 방법을 사용한 후 패키지를 설치할 때 더 이상 오류가 발생하지 않습니다.

따라서 오류는 개발자가 프로젝트를 패키징하고 배포 한 방법의 문제 일 수 있습니다. 우리 중 누구도 PyPi를 사용하는 방법을 알고 태어나지 않았으며 잘못된 튜토리얼에서 발생한 경우 공백을 채울 수 있습니다.

그것이 오류의 유일한 이유는 아니라고 확신하지만, 그것이 오류의 주요 원인이라고 확신합니다.


2

이 시도:

sudo apt-get install libpcap-dev libpq-dev

이 두 가지를 설치했을 때 저에게 효과적이었습니다.

자세한 내용은 여기 링크 를 참조하십시오.


1

오류 :

시스템 : aws ec2 인스턴스 (t2 small)

문제 : 통해 opencv python을 설치하는 동안

pip3 install opencv-python

  Problem with the CMake installation, aborting build. CMake executable is cmake
  
  ----------------------------------------
  Failed building wheel for opencv-python
  Running setup.py clean for opencv-python

나를 위해 일한 것

pip3 install --upgrade pip setuptools wheel

그 후에도 여전히 다음 오류 오류가 발생할 수 있습니다.

    from .cv2 import *
ImportError: libGL.so.1: cannot open shared object file: No such file or directory

libgl을 설치하면 오류가 해결되었습니다.

sudo apt update
sudo apt install libgl1-mesa-glx

도움이 되었기를 바랍니다


0

Ubuntu 18.04에서 apt패키지에 명령이 wheel포함되어 있지 않기 때문에이 문제가 발생했습니다 wheel. pip가 wheelpython 패키지 를 가져 오려고 시도 하고 성공하면 wheel명령도 사용할 수 있다고 가정합니다 . 우분투는 그 가정을 깨뜨립니다.

apt python3 코드 패키지의 이름은 python3-wheel. python3-pip권장하므로 자동으로 설치됩니다 .

apt python3 wheel 명령 패키지의 이름은 python-wheel-common. 이것도 설치하면 "실패한 빌딩 휠"오류가 수정됩니다.



0

pip install django-imagekit을 설치하려고 할 때 동일한 메시지가 나타납니다. 그래서 나는 pip install wheel (나는 파이썬 2.7을 가졌다)을 실행 한 다음 pip install django-imagekit을 다시 실행했고 작동했습니다. 감사


0

시스템에 Python3 만있는 경우 pip 대신 pip3 사용을 시작해야한다는 점을 추가하고 싶습니다.

다음 명령을 사용하여 pip3를 설치할 수 있습니다.

sudo apt install python3-pip -y

그런 다음 필요한 패키지를 설치할 수 있습니다.

sudo pip3 install <package>

0

Brotli를 설치하는 동안 동일한 문제가 발생했습니다.

오류

Failed building wheel for Brotli

여기 에서 .whl파일을 다운로드 하고 아래 명령을 사용하여 설치하여 해결했습니다.

C:\Users\{user_name}\Downloads>pip install Brotli-1.0.9-cp39-cp39-win_amd64.whl

0

제 경우에는 venv를 만든 후 pip 버전을 업데이트하십시오.이 업데이트는 9.0.1에서 20.3.1로 변경되었습니다.

python3 -m venv env/python
source env/python/bin/activate
pip3 install pip --upgrade

하지만 메시지는 ...

Using legacy 'setup.py install' for django-avatar, since package 'wheel' is not installed.

그런 다음 pip 업데이트 후 휠 패키지를 설치합니다.

python3 -m venv env/python
source env/python/bin/activate
pip3 install --upgrade pip
pip3 install wheel

그리고 메시지는 ...

Building wheel for django-avatar (setup.py): started
default:   Building wheel for django-avatar (setup.py): finished with status 'done'

-2

이것은 당신을 도울 수 있습니다! ....

pycparser 제거 :

pip uninstall pycparser

pycparser를 다시 설치하십시오.

pip install pycparser

termcolor를 설치하는 동안 동일한 오류가 발생하고 다시 설치하여 수정했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.