我正在尝试运行一个程序,该程序可以通过 crontab 使用 Selenium 和 PyAutoGUI 在 python(3.6) 中自动拉出一些选项卡。
这是当 cron 不运行该程序时我尝试运行的脚本:
import pyautogui
import selenium
from selenium import webdriver
browser = webdriver.Firefox()
browser.get("https://www.google.com")
但是,如果我注释掉第一行,cron 将运行该程序:
#import pyautogui
import selenium
from selenium import webdriver
browser = webdriver.Firefox()
browser.get("https://www.google.com")
这是我的 CronJob:
* * * * * export DISPLAY=:1 ; cd /root/testingDir ; sudo /usr/local/bin/python3 /root/testingDir/test.py
PyAutoGUI 安装到 /usr/local/lib/python3.6/site-packages
我尝试了 sys.path.append() 技巧,但这也不起作用。
我很困惑,因为 cron 似乎专门不会导入 pyautogui (我没有在任何其他导入中遇到过这个问题。有什么想法吗?
我也面临这个问题。这是我解决这个问题的方法(在已接受答案的帮助下here https://askubuntu.com/questions/23009/why-crontab-scripts-are-not-working)。关键是终端环境变量中缺少一些 cron 环境变量。通过以下方式比较每个上下文中的环境变量:
进入env
在航站楼
创建一个包含以下内容的 cron 作业* * * * * env > /tmp/env.output
和
检查输出
我通过在 cron 作业的顶部添加以下内容解决了这个问题,其中包含名为 pyautogui 的脚本:
DISPLAY=:0
XAUTHORITY=/run/user/1000/gdm/Xauthority
PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/home/rm/Downloads/bin:/home/rm/.local/bin:/home/rm/bin:/home/rm/Downloads/bin
15 * * * * /usr/bin/python3 /home/user/<pyscript.py>
所以看起来必须存在的环境变量的最小子集是:DISPLAY
, XAUTHORITY
and PATH
。 (我通过这样做得到了这些变量值env
在终端)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)