python - 在 Linux 启动时运行 python3 应用程序

标签 python linux bash

我有以下脚本

#!/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 服务器.py

更新:澄清帖子我需要应用程序在用户 pi 登录后开始运行,因为它需要访问 chrome

最佳答案

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

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

关于python - 在 Linux 启动时运行 python3 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47235042/

相关文章:

python - 如何在 xmlrpc 服务器而不是客户端上查看回溯?

c++ - ": No such file or directory"正在执行shell文件

Linux:如何列出和优化今天创建的所有 JPEG 文件?

linux - Shell 脚本在可配置的小时或天数后压缩 "my_dir"目录中的所有日志文件

python - 测量 Keras 层执行时间的正确方法

python - 使用 pygame 进行 LaTeX 类型渲染

c++ - boost 不同的工具集

python .bash_profile 别名

git - 在 Bash 命令提示符下添加 git 分支

python - 从不同的 pandas 行中获取元素的组合