pipインストールでの「Xの失敗したビルディングホイール」の意味は何ですか?


114

これはここSOで本当に人気のある質問ですが、私が見た多くの回答のどれも、このエラーが実際に何を意味するのか、そしてなぜそれが発生するのかを明確に説明していません。

混乱の原因の1つは、(たとえば)実行すると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)。
2018年

あなたの場合、あなたはwheelパッケージを見逃しているのでpip、ソースディストリクトからホイールを構築することができません。ビルディングホイールを明示的に無効にする場合は、--no-binaryフラグを使用しますpip install somepkg --no-binary=somepkg。またはを使用しますがpip install somepkg --no-binary=:all:、これにより、依存関係を含め、インストール用に選択されたすべてのパッケージのホイールが無効になることに注意してください。一部のパッケージpipをインストールするために使用できるソースdistがない場合、インストールは失敗します。
2018年

2
@hoefling:あなたの最初のコメントが本当の理由であり、答えになる可能性があります。2つ目は間違っています:ソースディストリビューション--no-binaryのみをダウンロードして使用するようにpipに指示します。ローカルバイナリホイールを構築することを防ぐためのフラグは確かに--no-cache-dirです。
Serge Ballesta 2018年

@hoefling私はwheels(0.32.2)を持っているので、それは問題ではありません。しかし、おそらくpycparserパッケージにはホイール(*.whl)が関連付けられていませんか?しかし、どうすればこのアプリオリを確認できますか?
not2qubit 2018年

1
pypi.org/project/pycparserのPyPIサイトを参照して、ファイルを要求できます。次に、.tar.gzファイルのみが存在し、それがPyPIのソースディストリビューションであることがわかります(ホイールには.whl拡張子が付きます)
Serge Ballesta 2018年

回答:


93

(ここにピップメンテナー!)

パッケージがホイールでない場合、pipは(を介してsetup.py bdist_wheel)そのためのホイールを作成しようとします。なんらかの理由で失敗した場合は、「pycparserの構築ホイールに失敗しました」というメッセージが表示され、pipは直接インストールにフォールバックします(経由setup.py install)。

ホイールができたら、pipは正しく開梱してホイールを取り付けることができます。pipは、できるだけ頻繁にホイールを介してパッケージをインストールしようとします。これは、ホイールを使用することのさまざまな利点(インストールの高速化、キャッシュ可能、コードを再度実行しないなど)によるものです。


ここでのエラーメッセージはwheel、でホイールを構築するために必要なロジックを含むパッケージが欠落していることが原因です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

49

昨日、同じエラーが発生 Failed building wheel for hddfancontrolしました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

1
ホイールを取り付けた後でも、私には機能しません!
vatsalay

33

それ以来、誰もこれを私自身離れて言及していないようです。上記の問題に対する私自身の解決策は、ほとんどの場合、以下を使用してキャッシュされたコピーを無効にすることですpip install <package> --no-cache-dir


1
メッセージを取り除くことが目標である場合、これは修正としてカウントされる可能性があります。そうでない場合は、これを回避策と呼びます。
ニルスマグナス

@NilsMagnusこれは単なることではありませんgetting rid of the message。以前の更新や失敗することが多い更新の残りがキャッシュディレクトリに含まれているため、インストーラがすでに更新されていると思った場合でもインストールを続行できます。
not2qubit

^^そうは言っても、なぜこれがデフォルトの動作ではないのか疑問に思っていますか?更新時にキャッシュされたコピーを保持したいのは誰ですか?まったく意味がありません。
not2qubit

4
質問に対する受け入れられた答えはどうですか?それは質問に答えません。
pascalIv

1
彼自身がそれを尋ね、それに答えたからです。このようにして、彼は私が信じる彼自身の答えを受け入れることができると思います。奇妙に聞こえますが、そうかもしれません。
アミットアモラ

4

パッケージ展開の観点からこの質問に対処することが役立つ場合があります。

PyPiにパッケージを公開する方法を説明するチュートリアルはたくさんあります。以下は私が使用したカップルです。

ミディアム
リアルパイソン

私の経験では、これらのチュートリアルのほとんどでは、ホイールではなく、ソースの.tarのみを使用しています。したがって、これらのチュートリアルを使用して作成されたパッケージをインストールすると、「ホイールの構築に失敗しました」というエラーが表示されます。

私は後のPython Software Foundationのドキュメントには、PyPI上のリンクを発見したPSFドキュメント。彼らのセットアップとビルドのプロセスが少し異なり、実際にホイールファイルのビルドが含まれていることを発見しました。

公式に文書化された方法を使用した後、パッケージのインストール時にエラーが発生しなくなりました。

したがって、エラーは単に開発者がプロ​​ジェクトをパッケージ化してデプロイした方法の問題である可能性があります。PyPiの使い方を知って生まれた人は誰もいません。間違ったチュートリアルで起こった場合は、空欄に記入してください。

それがエラーの唯一の理由ではないと確信していますが、それがエラーの主な理由であると確信しています。


2

これを試して:

sudo apt-get install libpcap-dev libpq-dev

私がこれらの2つをインストールしたとき、それは私のために働きました。

リンクを見る こちら参照してください


0

Ubuntu 18.04では、のaptパッケージにコマンドがwheel含まれていないため、この問題が発生しましたwheel。pipはwheelpythonパッケージをインポートしようとすると思いますが、それが成功した場合は、wheelコマンドも使用可能であるます。Ubuntuはその仮定を破ります。

aptpython3コードパッケージの名前はpython3-wheelです。python3-pip推奨されるため、これは自動的にインストールされます。

apt python3wheelコマンドパッケージの名前はpython-wheel-commonです。これもインストールすると、「失敗したビルドホイール」エラーが修正されます。



0

pip install django-imagekitをインストールしようとしたときに、同じメッセージが表示されました。そこで、pip install Wheel(python 2.7を使用していました)を実行してから、pip installdjango-imagekitを再実行しました。ありがとう


0

システムにPython3しかない場合は、pipではなくpip3の使用を開始する必要があることを付け加えておきます。

次のコマンドを使用してpip3をインストールできます。

sudo apt install python3-pip -y

この後、必要なパッケージのインストールを試みることができます。

sudo pip3 install <package>

0

エラー:

システム:aws ec2インスタンス(t2 small)

問題:opencvpythonのインストール中に

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

Brotliのインストール中に同じ問題が発生しました

エラー

Failed building wheel for Brotli

ここ.whlからファイルをダウンロード し、以下のコマンドを使用してインストールすることで解決しました

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

-1

これはあなたを助けるかもしれません!...。

pycparserのアンインストール:

pip uninstall pycparser

pycparserを再インストールします。

pip install pycparser

termcolorのインストール中に同じエラーが発生し、再インストールして修正しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.