繁体   English   中英

在Linux启动时运行python3应用

[英]running python3 app at start up of Linux

我有以下脚本

#!/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

猜测您正在从crontab运行失败的bash脚本。 从crontab运行程序的环境与从终端运行程序的环境非常不同。 一个主要的变化是,在linux start上运行的脚本没有附加的终端,因此缺少DISPLAY环境变量。

您正在程序中使用pyautogui。 在Linux启动时这是行不通的。 您是否真的要在Linux启动时运行该程序,还是要在用户登录到桌面环境后运行该程序?

因此,在rzzzwilson发表之前的评论后,我确实在登录后调查了脚本,这解决了我的问题

cd /home/pi/.config/lxsession/LXDE-pi/

纳米自动启动

将此添加到文件末尾

@ / usr / bin / python3 /home/pi/Desktop/Home/Server.py

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM