如何在cron作业中运行python文件

如何在cron作业中运行python文件,python,command-line,cron,Python,Command Line,Cron,我需要运行此文件: from apps.base.models import Event from apps.base.models import ProfileActiveUntil from django.template import Context from django.db.models import Q import datetime from django.core.mail import EmailMultiAlternatives from bonzer.settings i

我需要运行此文件:

from apps.base.models import Event
from apps.base.models import ProfileActiveUntil
from django.template import Context
from django.db.models import Q
import datetime
from django.core.mail import EmailMultiAlternatives
from bonzer.settings import SITE_HOST
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from bonzer.settings import send_mail, BONZER_MAIL, BONZER_MAIL_SMTP, BONZER_MAIL_USER,         BONZER_MAIL_PASS, BONZER_MAIL_USETLS


today = datetime.date.today()
monthAgo = today + datetime.timedelta(days=1)
monthAgoMinusOneDay = today + datetime.timedelta(days=2)
events = Event.objects.all()
ProfileActiveUntils = ProfileActiveUntil.objects.filter(Q(active_until__range=(monthAgo, monthAgoMinusOneDay)))
msg = MIMEMultipart('alternative')
msg['Subject'] = "Novim dogodivscinam naproti"
msg['From'] = BONZER_MAIL
msg['To'] = 'jjag3r@gmail.com'

text = u'bla'
html = u'bla'
send_mail(msg_to=msg['To'], msg_subject=msg['Subject'], msg_html=html, msg_text=text)
我是这样执行的:
*/2****/usr/local/bin/python2.7/home/nezap/webapps/bonzer/bonzer/apps/base/alert.py

但我得到一个错误:没有名为apps.base.models的模块

重要的事实是,我无法在服务器上安装virtualenv,因为我没有权限。此外,我对这方面还有些新手,所以我在服务器或python方面没有太多技能


谢谢。

cron
不读取rc外壳文件,因此需要定义环境变量PYTHONPATH,以包括
应用程序
包的位置以及脚本所需的所有其他模块文件

PYTHONPATH=/usr/local/lib/python2.7:/usr/lib/python2.7
*/2 * * * * /usr/local/bin/python2.7 /home/nezap/webapps/bonzer/bonzer/apps/base/alert.pyr

我认为这是您的cwd(当前工作目录)的问题。测试这一点的简单方法是转到根目录(cd/),然后运行:

python2.7 /home/nezap/webapps/bonzer/bonzer/apps/base/alert.py
你应该得到同样的错误。您想要使用的路径将取决于您通常运行脚本的位置。我猜可能是:

/home/nezap/webapps/bonzer/bonzer/apps/base

/主页/nezap/webapps/bonzer/bonzer/

因此,您的解决方案可能是:

*/2 * * * * cd /home/nezap/webapps/bonzer/bonzer/apps/base && /usr/local/bin/python2.7 ./alert.py

基本上,您是在告诉cron将目录更改为该路径,然后如果可以(&&)运行以下命令

*/2 * * * * cd /home/nezap/webapps/bonzer/bonzer && /usr/local/bin/python2.7 ./apps/base/alert.py