我使用Anaconda
Python安装,我还有一个Python脚本,当使用python update_data.py
从shell调用时,它可以正常工作。然后我用Python-Crontab
package写了一篇简短的cron
作业。然后我开始在Mac OS X El Capitan上遇到这些问题:
os.system()
返回256
时,不应该Pandas, numpy
这样的Python包无效。这是我的cron
脚本。
import os
from crontab import CronTab
tab = CronTab()
job_path = os.path.join(os.getcwd(), 'update_data.py')
python_path = "/Users/BJay/anaconda/envs/python3/bin/python "
cron_job = tab.new(command=python_path + job_path)
cron_job.minute.every(2)
tab.write()
print(tab.render())
我使用python_path
的输出设置var which python
。我没有提供有关update_data.py
的信息,因为它可以从CLI
正常工作。
当我在cron
环境中运行python3
时,我得到以下信息:
*/2 * * * * /Users/BJay/anaconda/envs/python3/bin/python /Users/BJay/myGitHub/update_data.py
这里是cron输出日志的摘录:
Subject: Cron <random@email.here> /Users/BJay/anaconda/envs/python3/bin/python /Users/BJay/myGitHub/update_data.py
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=MrBee>
X-Cron-Env: <USER=MrBee>
X-Cron-Env: <HOME=/Users/BJay>
===================================
0 of 0 repos updated successfully!
===================================
查看X-Cron-Env
,可能是cron
没有使用anaconda
,而是使用默认的Python安装吗?
我怎样才能解决这种情况?
如果有帮助,请点击我的PYTHONPATH
:
import os; print(os.getenv("PYTHONPATH"));
None
======这是我尝试运行的脚本的主要部分=====。
for repo in list_of_local_repos:
repo_path = os.path.join(parent_path, repo)
git_sequence = "cd {0} && git add . && git commit -m 'updated' && git push origin master".format(repo_path)
if os.system(git_sequence) == 0:
repos_updated += 1
repos_updated
在ipython notebook. Here's the notebook.中运行时,此脚本运行良好但是,使用python filename.py
运行CLI时,os.system()
此处始终返回256
,因此repos_updated
永远不会递增。