
PyYAMLのインストールエラー
Object Detection APIのセットアップでも発生していて、解消法を探すのに少し手間取ったためメモしておきます。
PyYAMLのインストールエラー
Collecting PyYAML==5.4.1
Downloading PyYAML-5.4.1.tar.gz (175 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 175.1/175.1 kB 5.0 MB/s eta 0:00:00
Installing build dependencies ... done
error: subprocess-exited-with-error
× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> See above for output.
note: This error originates from a subprocess, and is likely not a problem with pip.
Getting requirements to build wheel ... error
error: subprocess-exited-with-error
× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> See above for output.
note: This error originates from a subprocess, and is likely not a problem with pip.
対処としてオプションを付与
pip install PyYAML==5.4.1 --no-build-isolation
オプションの説明
`pip install`の`--no-build-isolation`オプションは、Pythonのパッケージをインストールする際にビルドプロセスを分離しないようにするためのオプションです。
通常、`pip`はPEP 517とPEP 518に準拠してパッケージをビルドします。これにより、パッケージのビルドプロセスは、それぞれのパッケージが定義するビルド依存関係が整っている「分離された」環境で行われます。これにより、ビルドプロセスが他のパッケージに影響を与えたり、逆に他のパッケージから影響を受けることがなく、パッケージのインストールがより信頼性のあるものになります。
しかし、これらのPEP規格に準拠することは必須ではなく、`--no-build-isolation`オプションを使用することで、ビルド分離を無効にすることができます。これは、パッケージのビルドが現在のPython環境で行われることを意味します。
ビルド分離を無効にしたい理由はいくつかあります。例えば、特定のシステムライブラリに依存しているパッケージをビルドする場合や、現在のPython環境にインストールされている特定のパッケージをビルド時に使用したい場合などです。ただし、`--no-build-isolation`オプションを使用すると、ビルドプロセスが環境に影響を受ける可能性があり、結果としてビルドの再現性が低下する可能性があるため、注意が必要です。