为什么python脚本通过终端运行而不通过crontab运行?

时间:2020-01-03 23:55:53

标签: python cron

我很感谢任何建议。

那是我的python脚本:

from pynput.mouse import Button, Controller
import time

time = time.localtime()
hourMinSec = (str(time.tm_hour) +":"+ str(time.tm_min) +":"+ str(time.tm_sec))

mouse = Controller()
print (mouse.position)
print (hourMinSec)

with open('/home/panda/desktop/mouseProg.log', 'a') as f:
    f.write(str(mouse.position) + "\n")
    f.write(str(hourMinSec) + "\n")

这显然给了我鼠标的位置和时间。

(1234,234)

12:23:34

在linux终端中运行得很好。

但是当我尝试通过crontab运行它时,我得到了:

 Traceback (most recent call last):
  File "/home/panda/PycharmProjects/Giraffe/maus.py", line 2, in <module>
    from pynput.mouse import Button, Controller
  File "/usr/local/lib/python3.5/dist-packages/pynput/__init__.py", line 40, in <module>
    from . import keyboard
  File "/usr/local/lib/python3.5/dist-packages/pynput/keyboard/__init__.py", line 51, in <module>
    from ._xorg import KeyCode, Key, Controller, Listener
  File "/usr/local/lib/python3.5/dist-packages/pynput/keyboard/_xorg.py", line 39, in <module>
    from pynput._util.xorg import (
  File "/usr/local/lib/python3.5/dist-packages/pynput/_util/xorg.py", line 40, in <module>
    _check()
  File "/usr/local/lib/python3.5/dist-packages/pynput/_util/xorg.py", line 38, in _check
    display = Xlib.display.Display()
  File "/usr/local/lib/python3.5/dist-packages/Xlib/display.py", line 89, in __init__
    self.display = _BaseDisplay(display)
  File "/usr/local/lib/python3.5/dist-packages/Xlib/display.py", line 71, in __init__
    protocol_display.Display.__init__(self, *args, **keys)
  File "/usr/local/lib/python3.5/dist-packages/Xlib/protocol/display.py", line 84, in __init__
    name, protocol, host, displayno, screenno = connect.get_display(display)
  File "/usr/local/lib/python3.5/dist-packages/Xlib/support/connect.py", line 73, in get_display
    return mod.get_display(display)
  File "/usr/local/lib/python3.5/dist-packages/Xlib/support/unix_connect.py", line 76, in get_display
    raise error.DisplayNameError(display)
Xlib.error.DisplayNameError: Bad display name "" 

问题似乎与

有关
from pynput.mouse import Button, Controller

当我注释掉它(以及相关行)时,它甚至可以通过crontab正常运行。

0 个答案:

没有答案