2017-04-22 6 views
1

おはよう、私はOSX El Capitanを実行しているMacで起動デーモンを使って遊んでいます。私はPythonでマシンを起動するときに実行したいスクリプトを作成しました(Webカメラで画像をスナップし、指定したディレクトリに保存する必要があります)。適切なplistを作成し、回復モードで起動してcsrutilを無効にしてから、/ System/Library/LaunchDaemonsにplistを追加しました。再起動すると、写真が表示されず、緑色のウェブカメラのランプも点灯しません。Python起動デーモン(OSX)でモジュールをインポートする

スクリプトのエラーログを確認したところ、PythonスクリプトがCV2(ImportError:module cv2という名前はありません)をインポートできないというエラーが発生しました。しかし、私はcv2をインストールしていて、システムが起動すると動作します。私のスクリプトは、cv2の前にインポートされているので、他のモジュール(os、datetime、およびtime)をロードできるようです。

追加のセキュリティ機能ですか?これを回避する方法はありますか?回避策がある場合、csrutilが有効になっていても動作しますか?私はそれを無効にして走り回りたいとは思わないが、LaunchDaemonsディレクトリに必要な変更を加えてから、再度有効にするだけで無効にする。私はcsrutilを無効にしてリブートしても、インポートエラーを受け取りました。それで(少なくとも私が知る限り)そのようには見えません。

ありがとうございます!

編集:私のデーモンのplistで指定されたpythonパスがopenCVが関連付けられているパスではないことがわかりました。しかし、クイックエコー$ PYTHONPATHは私に/usr/local/lib/python2.7/site-packagesを与えます。plistに入れたときに起動時にエラーが出ることはなくなりましたが、今は全く実行されていないようです。

また、私は/ tmp /になるように書き込むディレクトリを変更しようとしましたが、すべてのユーザーがそのディレクトリにアクセスできますが、まだ役に立たないからです。

答えて

3

Question: but now doesn't seem to execute at all.

いくつかのログをファイルに追加して、スクリプトがすべて実行されているかどうかを確認します。例えば

log = open('/tmp/my_script', 'w') 
log.write('after imports') 
1

あなたが使用される実際のPythonのバージョンが醸造を介してインストール1かどうかを確認するためにwhich pythonを行うことを試してみました(私はあなたが原因/usr/local下のパスのbrew install pythonをしたと仮定)?

/usr/localの実行可能ファイルでない場合は、brewをインストールすると、デフォルトのシステムPythonに置き換わることはありません。

関連する問題