我用 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/