4

を使用して定期的にPythonプログラムを実行するスクリプトを設定しようとしていますlaunchd。インポートが見つからないため、python プログラムが失敗します --- ログ ファイルにエラーが記録されているので、これはわかります。この問題を解決するために、 を作成~\.MacOSX\environment.plistして複製PYTHONPATHし、ログアウトしてから再度ログインしました。これでは問題を解決するには不十分なようで、他に何を試せばよいか途方に暮れています。

私はOSX、10.8.3を実行しています。

関連スレッド:

アップデート:

次のコマンドを実行できるようです。

launchctl setenv PYTHONPATH $PYTHONPATH

スクリプトは正常に実行されます。だから、私の質問を変更するには:

  1. これはどこに保存されますか?私はチェック~\.launchd.confして\etc\.launchd.conf、どちらも存在しませんでした。
  2. おそらく、この設定は再起動時にダンプされます。この情報を見つけられるようにどこで変更できlaunchdますか?
4

2 に答える 2

7

特定のジョブの環境を設定するにEnvironmentVariablesは、ジョブ定義自体でキーを使用する必要があります。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.example.app</string>
    <key>Program</key>
    <string>/path/to/your/script</string>
    <key>EnvironmentVariables</key>
    <dict>
        <key>PYTHONPATH</key>
        <string>/your/python/path</string>
    </dict>
</dict>
</plist>

デーモンまたはエージェントlaunchd(8)を編集して、サービスのデフォルトの環境変数を定義できます。後者は機能しますが、文書化されていません。現在文書化されている (ただしサポートされていない) ユーザーごとの構成ファイルは./etc/launchd.conf/etc/launchd-user.conf$HOME/.launchd.conf

これらの構成ファイルには、サブコマンドのリストが含まれていますlaunchctl(1)。必要なものは次のとおりです。

setenv PYTHONPATH /your/python/path

更新: /etc/launchd.conf Mac OS X 10.10 以降ではサポートされていません。これらのシステムでは、ジョブごとに環境変数を定義する必要があります。

于 2013-03-22T01:01:55.350 に答える
2

上記のどれも実際には機能しませんでした(OS X 10.11.3)。ブレークスルーは、このスクリプトがターミナルでは正常に実行されるが、launchd からではなく、適切なモジュールを使用して Python のバージョンへの絶対フルパスを書き込むことができることを遅ればせながら読んだことでした。ああ。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.example.app</string>
    <key>ProgramArguments</key>
    <string>/path/to/your/python</string>
    <string>/path/to/your/script</string>
</dict>
</plist>
于 2016-03-14T21:34:28.420 に答える