我对Unix和crontab很陌生。我运行的唯一主要问题是将终端指向要运行的特定程序的python模块。从命令行程序运行良好,但不会从crontab。
第一个cronjob给我发了一封电子邮件说cronjob正在运行。第二个(createUpdate)运行我构建的脚本,设置为每分钟运行一次。
crontab-l返回:
*/1 * * * * python /Users/JohnDoe/Desktop/emailalert.py
*/1 * * * * PYTHONPATH =/Library/Frameworks/Python.framework/Versions/Current/lib/python2.7/site-packages; export PYTHONPATH; python /Users/JohnDoe/Desktop/createUpdate.py
我的Python结构正确吗?
我应该在亲信面前说出来吗?
“出口Python”有必要吗?
编辑 我忘了加上错误
/bin/sh: PYTHONPATH: command not found
Traceback (most recent call last):
File "/Users/JohnDoe/Desktop/createUpdate.py", line 1, in <module>
import beatbox
ImportError: No module named beatbox
正确的方法是
请注意变量赋值中的空格。不需要分号,也不需要导出变量,因为在命令之前声明变量已经使它们对于命令本身处于活动状态。
使用
在你的crontab。没有分号,
PYTHONPATH
只适用于python
的实例和脚本。(而且,我认为你得到了
错误,因为
PYTHONPATH
和等号之间有空格。)你不需要出口Python。如果全局安装了beatbox,则应该能够在调用Python的同一行(在同一命令中)包含环境设置,如下所示:
另外,确保变量名、等号和变量值之间没有空格。
您应该真正使用
virtualenv
来创建沙盒Python,这样就不必全局安装外部库。如果安装virtualenv并将依赖项安装到其中,则可以执行以下操作不用担心全局依赖性。
这是virtualenv的文档:http://www.virtualenv.org/en/latest/
相关问题 更多 >
编程相关推荐