在 virtualenv 中运行 python 脚本并在 Mountain Lion 上启动

在 virtualenv 中运行 python 脚本并在 Mountain Lion 上启动

我在虚拟环境 (ENV) 中有一个 python 脚本,该脚本调用了 ENV 中的其他模块。我想每天在特定时间运行该脚本。因此,在 OS X 上,我应该使用 launchd。

我编写了一个 .plist 并将其放入 ~/Library/LaunchAgents 中,供每个用户使用。我已加载 .plist,但控制台中出现以下错误:

2013 年 3 月 14 日 10:51:50.000 PM kernel[0]: 代码签名: cs_invalid_page(0x10ce98000): p=1279[python] 清除 CS_VALID

通过将 .plist 键 StartInterval 设置为 15 并看到该消息每 15 秒出现一次,我确认该消息与脚本或 launchd 进程有关。

这是.plist:

<?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.dayone.archive</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/css/Working/PythonScripts/ENV/bin/python</string>
        <string>/Users/css/Working/PythonScripts/ENV/bin/recentLinks.py</string>
    </array>
    <key>StartInterval</key>
    <integer>15</integer>
    <key>KeepAlive</key>
    <true/>
    <key>WorkingDirectory</key>
    <string>/Users/css/Working/PythonScripts/ENV/bin</string>
</dict>
</plist>

我也尝试过使用 bash 脚本调用 python 脚本来运行 .plist (!),但结果相同。当然,我从终端运行 bash 脚本没有问题。

答案1

问题不在于 .plist 或 launchd,也不在于控制台错误所暗示的 CODE SIGNING。

Apple Communities 上的 Linc Davis 帮我找到了问题所在:主 Python 脚本没有调用它所调用的二进制文件的绝对路径。修正这个问题后,Launched 运行良好。吸取了教训。

相关内容