Crontab |缺少Python Modu

2024-06-01 01:40:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我对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

Tags: py程序终端unixusers指向cronjobmodule
3条回答

正确的方法是

*/1 * * * * PYTHONPATH=/Library/Frameworks/Python.framework/Versions/Current/lib/python2.7/site-packages python /Users/JohnDoe/Desktop/createUpdate.py

请注意变量赋值中的空格。不需要分号,也不需要导出变量,因为在命令之前声明变量已经使它们对于命令本身处于活动状态。

使用

*/1 * * * * PYTHONPATH=/Library/Frameworks/Python.framework/Versions/Current/lib/python2.7/site-packages python /Users/JohnDoe/Desktop/createUpdate.py 

在你的crontab。没有分号,PYTHONPATH只适用于python的实例和脚本。

(而且,我认为你得到了

/bin/sh: PYTHONPATH: command not found

错误,因为PYTHONPATH和等号之间有空格。)

你不需要出口Python。如果全局安装了beatbox,则应该能够在调用Python的同一行(在同一命令中)包含环境设置,如下所示:

*/1 * * * * PYTHONPATH=/Library/Frameworks/Python.framework/Versions/Current/lib/python2.7/site-packages python /Users/JohnDoe/Desktop/createUpdate.py 

另外,确保变量名、等号和变量值之间没有空格。

您应该真正使用virtualenv来创建沙盒Python,这样就不必全局安装外部库。如果安装virtualenv并将依赖项安装到其中,则可以执行以下操作

*/1 * * * * /path/to/virtual/env/bin/python /Users/JohnDoe/Desktop/createUpdate.py

不用担心全局依赖性。

这是virtualenv的文档:http://www.virtualenv.org/en/latest/

相关问题 更多 >