在launchd中使用virtualenvs运行python时查找模块

时间:2013-07-18 06:32:59

标签: python virtualenv launchd

此Q& A类似于Python Script not running in crontab calling pysaunter中提供的Q& A,但是按照Launchd& amp;的Plist。

我在virtualenv中成功运行python脚本,但是当我尝试在Launchd中安排它时,我收到了一个追踪错误,我的plist错误日志文件说“ImportError:没有名为sqlalchemy的模块”。该怎么做,该怎么办?

2 个答案:

答案 0 :(得分:4)

首先,我尝试将.virtualenv sitepackages绝对路径添加到.bash_profile和.profile中的路径和python路径变量。我还尝试在launchd config中设置环境变量path和pythonpath。没有快乐。

最终解决的问题是在plist中添加PATH和PYTHONPATH的环境变量。哪个修好了?不确定,但两者都没有伤害任何东西。在这些环境变量中,我在.virtualenvs中包含了sitepackages的绝对路径。问题解决了。

HTH。

示例:

<key>EnvironmentVariables</key>
    <dict>
    <key>PATH</key><string>/Users/user/.virtualenvs/oraenv/lib/python2.7/site-packages/</string>
    <key>PYTHONPATH</key><string>/Users/user/.virtualenvs/oraenv/lib/python2.7/site-package/</string>
    </dict>

答案 1 :(得分:0)

使用pipenv,以上答案将简化为以下配置:

<key>ProgramArguments</key>
<array>
  <string>/usr/local/bin/pipenv</string>
  <string>run</string>
  <string>python</string>
  <string>python_script_in_working_directory.py</string>
</array>
<key>WorkingDirectory</key>
<string>/path/to/working/directory</string>