Python模块/库可在CronJobs中正常工作

问题描述

我在使用cronjob执行从python脚本调用python模块pyautogui中执行功能时遇到问题。

我目前在Mac OS上运行此程序,并通过anaconda环境运行python。阅读了很多StackOverflow和StackExchange的帖子后,我能够找到这一对(here)的设置,它对设置我的PATH和env变量非常有帮助。能够成功地使python脚本与crontab中指定的作业一起运行。

但是,脚本的仅一行(取决于pyautogui模块)没有执行。正如大多数帖子所提到的那样,从终端手动运行时,此脚本运行没有问题,但通过cron不会产生相同的结果。

这是我的crontab,要在周一至周五上午730点运行;

SHELL=/bin/bash
HOME=/Users/harrisonw
PYTHONPATH=/Users/harrisonw/anaconda3/lib/python3.7/site-packages

30 7 * * 1-5  cd /Users/harrisonw/Documents/cron_jobs && /Users/harrisonw/anaconda3/bin/python3.7 online_status_pyautoguyi.py >> ~/Documents/cron_jobs/online_status_cron_output.txt 

这是我的剧本,上面是shebang;打开网址的超级简单逻辑,然后每五分钟刷新一次该网页,持续2个小时。

#!/Users/harrisonw/anaconda3/bin/python3.7

import os
import time
import pyautogui as py

refresh_counter= 0                  #counter for whileloop to break after certain number
url= "https://www.facebook.com"     #url to access and refresh

os.system("open " + url)            #opens url using os library
time.sleep(10)                      #wait 10 secs for webpage to load

while True:                         #loop refresh command for 2 hours
    time.sleep(300)                 #wait 5 mins 
    py.hotkey('command','r')       #calls hotkey function  "Command+R" to refresh page
    print("Refreshed")
    refresh_counter += 1            #count +1 for each refresh
    
    if refresh_counter == 24:       #condition to reach 24 refreshes in 5 min intervals= 2hrs
        break
    else:                           #continue loop if 24 is not reached. 
        continue

print(refreshed_counter)
print("\nComplete") 

py.hotkey('command','r')行是我寻求帮助的问题。

这是文件online_status_cron_output.txt中的输出,如上面的crobtab中所述,确认脚本已运行。

Refreshed
Refreshed
2
Complete

我怀疑我缺少指向pyautogui模块的附加PATH或crontab中的env变量,但不确定如何从此处继续。

也许是一个愚蠢的问题,但是pyautogui与cronjobs兼容吗?

对此有任何见识和建议,我们深表感谢。谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)