macOSにseleniumをインストールしようとしたら何やらエラーが出ました。
結論から言うとpipアップグレードしたらエラーが解消してseleniumのインストールができました👍
こんな方にオススメ
- pipコマンドで以下のようなエラーが発生して解決策を知りたい方
ERROR: Failed building wheel for cryptography
ERROR: Could not build wheels for cryptography which use PEP 517 and cannot be installed directly
インストール失敗時のエラー内容
% pip3 install selenium
Defaulting to user installation because normal site-packages is not writeable
Collecting selenium
・・・(省略)
error: can't find Rust compiler
If you are using an outdated pip version, it is possible a prebuilt wheel is available for this package but pip is not able to install from it. Installing from the wheel would avoid the need for a Rust compiler.
To update pip, run:
pip install --upgrade pip
and then retry package installation.
If you did intend to build this package from source, try installing a Rust compiler from your system package manager and ensure it is on the PATH during installation. Alternatively, rustup (available at https://rustup.rs) is the recommended way to download and update the Rust compiler toolchain.
This package requires Rust >=1.41.0.
----------------------------------------
ERROR: Failed building wheel for cryptography
・・・(省略)
ERROR: Could not build wheels for cryptography which use PEP 517 and cannot be installed directly
WARNING: You are using pip version 20.2.3; however, version 21.3.1 is available.
You should consider upgrading via the '/Library/Developer/CommandLineTools/usr/bin/python3 -m pip install --upgrade pip' command.
原因
正直真因はわかっていないですが、ちょっと調べた限り、cryptographyのビルドにRust compilerを使うけど、Rust compilerが見当たらないため出ているエラーと想定されます。
error: can't find Rust compiler
・・・(省略)
ERROR: Failed building wheel for cryptography
・・・(省略)
ERROR: Could not build wheels for cryptography which use PEP 517 and cannot be installed directly
やったこと
stackoverflowを見たら、Rust compilerをインストールするか、pipをアップグレードするかを検討してみて。
と書いてあったし、エラー内容の最後にご丁寧にpipのアップグレードを検討してくださいと書いてくれていたので、まずは簡単そうなpipをアップグレードすることにしました。
% pip3 install --upgrade pip
Defaulting to user installation because normal site-packages is not writeable
Collecting pip
Downloading pip-21.3.1-py3-none-any.whl (1.7 MB)
|████████████████████████████████| 1.7 MB 1.0 MB/s
Installing collected packages: pip
WARNING: The scripts pip, pip3 and pip3.8 are installed in '/Users/xxxx/Library/Python/3.8/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed pip-21.3.1
なんかまだWARNING出てますけど、それは置いておいて、無事pipのアップグレードが完了しました!
念のため、バージョン確認しておきましょう。
% pip3 -V
pip 21.3.1 from /opt/homebrew/lib/python3.9/site-packages/pip (python 3.9)
最初に失敗したseleniumのインストールをやってみます!
% pip3 install selenium
Defaulting to user installation because normal site-packages is not writeable
Collecting selenium
・・・(省略)
Installing collected packages: pycparser, cffi, attrs, sortedcontainers, sniffio, outcome, idna, h11, cryptography, async-generator, wsproto, urllib3, trio, pyOpenSSL, certifi, trio-websocket, selenium
Successfully installed async-generator-1.10 attrs-21.4.0 certifi-2021.10.8 cffi-1.15.0 cryptography-36.0.1 h11-0.13.0 idna-3.3 outcome-1.1.0 pyOpenSSL-21.0.0 pycparser-2.21 selenium-4.1.0 sniffio-1.2.0 sortedcontainers-2.4.0 trio-0.19.0 trio-websocket-0.9.2 urllib3-1.26.8 wsproto-1.0.0
すると、Successfully installedが出たので成功しました!やった〜🙌
pip20.2.3から21.3.1にアップグレードするにあたって、Rust compilerが含まれるようになったということなんですかね🤨
pipのChangelogにはそれらしいものがない気がしますが・・
なんにせよ、目的は達成できたので良しとします!
なにか真因がわかる方いらっしゃいましたら、是非教えてください〜!
上記解決しました!
「pip」ではなく「cryptography」側の問題で、pipをアップグレードすることで「Rustでコンパイル済み」の「パッケージ(cryptography wheel)」を取って来ていた、ということですね!
上記の【Installing cryptography fails with error: Can not find Rust compiler】より。