此问答类似于 Python Script not running in crontab calling pysaunter 中提供的问答, 但以 Launchd 和 Plists 的形式出现。
我在 virtualenv 中成功运行了 python 脚本,但是当我尝试在 Launchd 中安排它时,我收到了一个回溯错误到我的 plist 错误日志文件,上面写着“ImportError:没有名为 sqlalchemy 的模块”。怎么办,怎么办?
最佳答案
起初我尝试将 .virtualenv sitepackages 绝对路径添加到 .bash_profile 和 .profile 中的路径和 python 路径变量。我还尝试在 launchd 配置中设置环境变量路径和 pythonpath。没有快乐。
最终修复它的是将 PATH 和 PYTHONPATH 的环境变量添加到 plist 中。哪个固定的?不确定,但是同时拥有它们并没有什么坏处。在这些环境变量中,我在 .virtualenvs 中包含了站点包的绝对路径。问题解决了。
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>
关于python - 在 launchd 中使用 virtualenvs 运行 python 时查找模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17716181/