python - 在 cron 中运行 headless selenium 时,出现错误 "Pyperclip could not find a copy/paste mechanism for your system"

标签 python selenium cron xvfb pyperclip

我用 Python 实现了一个 selenium 脚本,用于将一些图片和内容上传到 Facebook,我将其命名为 FBUpload.py。

当我以这种方式启动它时,它工作得很好(在 headless 模式下):

Xvfb :10 -ac &
python3 /home/someuser/scripts/FBUpload.py

问题是,当我尝试配置一个 cronjob 来启动相同的脚本时,这样:

00 * * * * Xvfb :10 -ac &
01 * * * * python3 /home/someuser/scripts/FBUpload.py
45 * * * * kill -9 $(ps -auxw |grep Xvf|head -1| awk '{print $2}')

然后失败并出现以下错误:

Pyperclip could not find a copy/paste mechanism for your system

这是我的设置: Ubuntu 20.04.4 LTS | Ubuntu 20.04.4 LTS Python3 | pyperclip 1.7.0

这些是我已经安装的复制和粘贴机制:

PyQt5 5.15.6
PyQt5-Qt5 5.15.2
PyQt5-sip 12.10.1
QtPy 2.1.0
xclip 0.13-1 (in /usr/bin because it was installed via apt)
xsel 1.2.0+git9bfc13d.20180109-3 (in /usr/bin because it was installed via apt)

(我无法按照这篇文章中所述下载 PyQt4 或 qkt:pyperclip module raising an error message,因此我按照建议的解决方案下载了 QtPy。但问题仍然存在。)

我尝试了具有类似问题的帖子中的修复,但没有一个对我有用。我想知道这个问题是否与用户有关(因为当我使用“sudo”运行脚本时,root 用户找不到非 root 用户安装的库)。

我还发现了另一个似乎类似的问题(但问题不是 cron,而是 systemd):Ubuntu 16.04 - Python 3 - Pyperclip in terminal and via systemd

最佳答案

您需要提供DISPLAY环境。

试试这个:

01 * * * * DISPLAY=":0" python3 /home/someuser/scripts/FBUpload.py

如果这不起作用,请尝试通过检查当前环境来找到正确的值:

echo $DISPLAY

关于python - 在 cron 中运行 headless selenium 时,出现错误 "Pyperclip could not find a copy/paste mechanism for your system",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72854490/

相关文章:

python - 如何通过考虑月份创建 7 天的序列

python - 使用 Pandas 检查列的第一位数字

java - 我可以列出使用 selenium webDriver 时具有特定共享名称的所有元素吗

redis - 存储数据并同时订购列表的最佳方式

linux - `cron` 文件是由哪种编程语言制作的?

java - 从 CRON 作业运行 Java 代码

python - 有没有更多的Pythonic方法来执行以下重复代码

Python、keras、卷积自动编码器

c# - 使用 Selenium 获取输入字段的当前文本

java - Selenium 进口无法解决