问题描述
我在使用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 (将#修改为@)