【问题标题】:How to make python open new Terminal as normal user and not as root user如何使python以普通用户而不是root用户身份打开新终端
【发布时间】:2019-08-12 10:13:02
【问题描述】:

我试图让 python 运行一个终端命令,这将改变我的桌面壁纸。在普通终端中运行此命令将更改我的墙纸。但是,当我尝试让 python 在终端中运行此命令时,它不起作用并给我一个错误。

当我以 root 用户身份打开终端时,我可以复制此错误。我使用 su 登录并输入了我的密码。输入命令然后给我一个错误并且它不执行。当我尝试使用模块 os 或子进程使用 python 执行命令时也是如此。

是否因为我更改以 pcmanfm(即窗口管理器)开头的壁纸的命令存在路径问题,而当我是 root 用户时,路径已更改?

如何让 python 在我的树莓派上以“普通”用户身份打开终端,并在其中运行命令?

这是改变我的桌面壁纸的终端命令:

pcmanfm --set-wallpaper /usr/share/rpd-wallpaper/bridge.jpg

当我运行我的 python 代码打开终端时会发生这种情况:

root@raspberrypi:/home/pi/Desktop# 

而不是正常工作时:

pi@raspberrypi:~ $ 

这是我的 python 代码,它旨在使用更改我的桌面墙纸的命令打开一个新终端,但是如上所述,我最终以 ROOT 用户身份出现错误并且没有任何反应:

import os,random
import subprocess as sub

sub.call('lxterminal -e bash -c "pcmanfm --set-wallpaper /usr/share/rpd-wallpaper/bridge.jpg; sleep 3;exec bash"', shell=True)

从普通终端执行以下操作完美:

lxterminal -e bash -c "pcmanfm --set-wallpaper /usr/share/rpd-wallpaper/bridge.jpg; sleep 3;exec bash"

这是运行python代码后的结果,这是我经常得到的错误:

** Message: 12:11:08.734: x-terminal-emulator has very limited support, consider choose another terminal

root@raspberrypi:/home/pi/Desktop# 

那么我怎样才能让python以用户“pi”而不是以root身份打开终端? 或者这不是问题吗? 谢谢!

【问题讨论】:

  • 使用 "os.system("gnome-terminal")" ,我猜它会帮助你。

标签: python linux python-3.x raspberry-pi pcmanfm


【解决方案1】:

问题在于将 python 脚本调用为 sudo。 正常打开python脚本为: Python3 脚本.py 将作为普通用户打开一个终端和。更换我的桌面壁纸, 而 sudo python3 script.py 以 root 用户身份打开终端,然后更改壁纸的命令不再起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    • 1970-01-01
    • 2011-10-03
    • 2011-12-31
    • 2015-10-01
    相关资源
    最近更新 更多