Cron 作业中的 PyAutoGUI

2024-05-23

我正在尝试运行一个程序,该程序可以通过 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 环境变量。通过以下方式比较每个上下文中的环境变量:

  1. 进入env在航站楼

  2. 创建一个包含以下内容的 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(使用前将#替换为@)

Cron 作业中的 PyAutoGUI 的相关文章

随机推荐

  • Oracle Java 教程 - 回答问题时可能出现错误

    我是 Java 新手 正在阅读 Oracle 教程 每个部分之后都有问题和答案 我不明白一个答案中的一句话 见下面的粗体线 来源是https docs oracle com javase tutorial java javaOO QandE
  • 如何插入UUID的值?

    我在 Play Framework 2 3 支持的 postgresql 9 4 中使用 anorm 2 4 给出一个这样的模型 case class EmailQueue id UUID send from String send to
  • 挑战:优化取消列出[简单]

    因为 SO 最近有点慢 所以我发布了一个简单的问题 如果大鱼们能在这场比赛中留在替补席上并给新秀们一个回应的机会 我将不胜感激 有时我们的对象具有大量的大列表元素 向量 您如何将这个对象 取消列出 到单个向量中 证明你的方法比unlist
  • 如何在 Openfire 中使用 smack

    你好 我计划开发一个可以连接到 gtalk facebook 等的聊天客户端 我决定将 smack API 与 openfire 一起使用 但我需要很少的指导来了解如何将它与 openfire 服务器一起使用 openfire 是否提供了基
  • awk 的 printf 插入多个变量的正确语法是什么?

    我复制了一些使用 printf 输出字符串在文件中出现的频率的代码 awk BEGIN print The number of times a appears in the file a a counter 1 END printf s n
  • IIS6 中是否有与 .htaccess 等效的基于文件的文件? (不是配置/插件)

    有很多similar对此有疑问 但它们似乎都涉及配置权限或安装插件 我正在寻找一种 愚蠢 的解决方案 即允许从源代码控制部署代码并自动访问某些被阻止的路径 而无需任何人配置服务器 我只需要目录和文件阻止 htaccess 没有其他功能 需要
  • 使用 Facebook 进行身份验证的网站的 REST API

    我们有一个网站 其中only登录网站并进行身份验证的方式是使用 Facebook 这不是我的选择 当您第一次登录 Facebook 时 系统会自动为您创建一个帐户 现在 我们希望为我们的网站创建一个 iPhone 应用程序 并为其他人使用我
  • 如何使用 Linq to Entities *不*先检索行从表中删除一行或多行?

    我知道我可以将删除存储过程映射到特定类型的删除方法 但是 这需要将检索到的对象传递给我的上下文DeleteObject method 这已经够糟糕的了 但是如果我想删除 2000 行怎么办 我可以使用 Linq to Entities 执行
  • VBA Excel如何在文本框中写入Excel公式

    如何将Excel公式放入文本框中 我尝试过这样的事情 Sub CivBox With ActiveSheet Shapes Civils 3 Copy C26 Activate Paste Shapes Shapes Count Name
  • 在 iOS Safari 上滚动后锚点失去点击能力

    使用它来获取点击次数 nav li a click function event event preventDefault target this attr href replace goToByScroll target 这是滚动功能 f
  • 能够使用 Bootstrap 3 网格系统指定选择元素的宽度

    我有以下内容
  • 如何在 Lambda 中将对象上传到 S3?

    似乎无法将对象上传到 Lambda 中的 S3 本地一切正常 日志中没有错误可以显示出了什么问题 代码如下 console log Loading function var AWS require aws sdk var s3 new AW
  • 查明具有特定 ID 的会话是否已过期

    我正在创建一个上传功能 将用户上传的文件存储在服务器上 并以用户的会话 ID 作为名称 现在 我只想将此文件保留在服务器上 直到该会话处于活动状态 所以 我的问题是 如何根据会话 ID 确定会话是活动的还是过期的 以便在后一种情况下我可以安
  • 为什么反射会减慢Android手机的速度

    我多次读到反射会降低手机性能 这有多真实 例如 在我的例子中 我从 Web 服务获取一些参数 这些参数与我在 Android 应用程序中的类的参数同名 所以我只是使用java字段和反射设置这些参数的值 它似乎并没有降低性能 有人可以向我解释
  • 解析迁移到 mLabs 和 Heroku 的错误

    我至少一年前将解析数据库迁移到 Mlabs 从那时起我就一直在开发该应用程序 解析仪表板表示我已成功迁移 Mlab 和 Parse 都收到了数据库的更新 然而 在过去一两周内 该应用程序不再经过登录页面 没有调整代码 这是服务器问题 以下是
  • 如何从数据框中按降序获取前n家公司

    我正在尝试从数据框中获取排名前 n 的公司 下面是我的代码 data Forbes2000 package HSAUR sort Forbes2000 profits decreasing TRUE 现在我想从这个排序向量中获取前 50 个
  • 将指针作为模板参数传递给成员函数。为什么这有效?

    我有一些代码 100 适用于我的用例 我只是想知道是否有人可以解释它是如何以及为什么工作的 我有一个模板类 位于一些处理线程和网络通信的代码与库用户之间 用于将从服务器接收到的数据传递给用户 template
  • 当前一个值也在 apply 中计算时,Pandas 有没有办法使用 dataframe.apply 中的前一行值?

    我有以下数据框 Index Date A B C D 2015 01 31 10 10 Nan 10 2015 02 01 2 3 Nan 22 2015 02 02 10 60 Nan 280 2015 02 03 10 100 Nan
  • 删除旧版本的 create-react-app

    我想使用创建一个新的反应应用程序create react app脚本 我仍然安装了一个不再受支持的全局版本 因此我卸载了全局版本并尝试创建一个新版本 如下所示 npx create react app myapp 然后我得到了一个没有使用模
  • Cron 作业中的 PyAutoGUI

    我正在尝试运行一个程序 该程序可以通过 crontab 使用 Selenium 和 PyAutoGUI 在 python 3 6 中自动拉出一些选项卡 这是当 cron 不运行该程序时我尝试运行的脚本 import pyautogui im