mac, VisualStudio Code, OpenCV, VideoCapture, Crash due to PRIVACY VIOLATION

現象 

mac OSで、Visual Studio Code で、次のコードを実行すると、クラッシュする。

import cv2
cap = cv2.VideoCapture(0) # ここで、Pythonがクラッシュする。

環境

Mac OS: Catalina 10.15.6

Visual Studio Code: 1.48.2

Python 3.8.4

原因

クラッシュレポートを見ると、次のようになっていて、

Crashed Thread: 1 Dispatch queue: com.apple.root.default-qos
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY

Thread 1 Crashed:: Dispatch queue: com.apple.root.default-qos

0x00007fff71fb4411 abort_with_payload + 9 3 com.apple.TCC 0x00007fff6868559f __CRASHING_DUE_TO_PRIVACY_VIOLATION + 163
4 com.apple.TCC 0x00007fff68683531 __TCCAccessRequest_block_invoke.114 + 500

CRASHING_DUE_TO_PRIVACY_VIOLATION

macOS 10.15 Catalinaでは「User Consent」がさらに強化され、アプリがスクリーンキャプチャの撮影や書類、ダウンロードフォルダへのアクセスする際にユーザーの承認が必要に。

Visual Studio Code が Python を実行する段階で、Permission を取得していないのが原因と思われる。

Workaround

調べた限りでは、解決策は見つからず、次のワークアラウンドしかない。

方法1

コマンドラインから、sudo で Visual Studio Codeを起動する。

$ sudo /Applications/Visual\ Studio\ Code.app/Contents/MacOS/Electron 

方法2

sudo /bin/bash でターミナルを起動し、Python を起動し、直接 実行する。

投稿者: admin

Free Software Engineer

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です