这个问答类似于Python Script 中提供的一个,它不是在 crontab 中调用 pysaunter 运行的,而是根据 Launchd 和 Plists 提出的。
我在 virtualenv 中成功运行了 python 脚本,但是当我尝试在 Launchd 中安排它时,我收到了我的 plist 错误日志文件的回溯错误,上面写着“ImportError:没有名为 sqlalchemy 的模块”。怎么办,怎么办?
这个问答类似于Python Script 中提供的一个,它不是在 crontab 中调用 pysaunter 运行的,而是根据 Launchd 和 Plists 提出的。
我在 virtualenv 中成功运行了 python 脚本,但是当我尝试在 Launchd 中安排它时,我收到了我的 plist 错误日志文件的回溯错误,上面写着“ImportError:没有名为 sqlalchemy 的模块”。怎么办,怎么办?
起初我尝试将.virtualenv sitepackages 绝对路径添加到.bash_profile 和.profile 中的path 和python 路径变量。我还尝试在启动配置中设置环境变量路径和 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>
使用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>