我有以下脚本
#!/bin/bash
echo "Welcome to auto shell"
cd /home/pi/Desktop/Home
echo "Running the server now.....!"
echo "*************************" |& tee -a /home/pi/Desktop/Home/logs.log
echo "Today is " |& tee -a /home/pi/Desktop/Home/logs.log
date |& tee -a /home/pi/Desktop/Home/logs.log
python3 Server.py |& tee -a /home/pi/Desktop/Home/logs.log
但输出是:
Today is
Sat Nov 11 01:03:46 EST 2017
Traceback (most recent call last):
File "Server.py", line 1, in <module>
import radiojavan as rj
File "/home/pi/Desktop/Home/radiojavan.py", line 2, in <module>
import pyautogui as gui
File "/home/pi/.local/lib/python3.5/site-packages/pyautogui/__init__.py", line 115, in <module>
from . import _pyautogui_x11 as platformModule
File "/home/pi/.local/lib/python3.5/site-packages/pyautogui/_pyautogui_x11.py", line 160, in <module>
_display = Display(os.environ['DISPLAY'])
File "/usr/lib/python3.5/os.py", line 725, in __getitem__
raise KeyError(key) from None
KeyError: 'DISPLAY'
当我通过输入手动运行应用程序时没有问题 python3 Server.py
更新:澄清到帖子我需要应用程序在用户pi登录后开始运行,因为它需要访问chrome
答案 0 :(得分:2)
猜测你正在从crontab运行你失败的bash脚本。从crontab运行程序时的环境与从终端运行程序有很大不同。一个主要的变化是在linux启动时运行的脚本没有连接终端,因此缺少DISPLAY环境变量。
您正在程序中使用pyautogui。这不会在Linux启动时工作。你真的想在linux启动时运行程序,还是希望它在用户登录桌面环境后运行?
答案 1 :(得分:0)
所以在rzzzwilson之前的评论之后,我确实在登录后查看了脚本,这解决了我的问题
cd /home/pi/.config/lxsession/LXDE-pi /
纳米自动启动
将其添加到文件的末尾
@ / usr / bin / python3 /home/pi/Desktop/Home/Server.py