gpt4 book ai didi

python - 为什么每次 PyQt5 项目都会收到警告 "QStandardPaths: XDG_RUNTIME_DIR not set"

转载 作者:太空狗 更新时间:2023-10-30 00:59:02 25 4
gpt4 key购买 nike

我正在使用 python 3.6.2 和 Emacs 25 在 Ubuntu 中开发 PyQt5 项目,它以 root 权限运行。这工作正常,但我越来越

QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'

从每次运行的命令行。

如果您能让我了解这是什么以及避免相同情况的可能解决方案,那就太好了。

代码

class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):

def __init__(self, parent=None):
super(MainWindow, self).__init__(parent=parent)
self.setupUi(self)
# TODO: board connection
self.comPort.addItems([str(port) for port in display_SerialPorts()])
self.comPort.highlighted.connect(self.boardConnet)


def boardConnet(self):
baudrate = 9600
port = self.comPort.currentText()
ser = serial.Serial(
port, baudrate, timeout=1) # open first serial port
ser.close()
ser.open()

提前感谢您抽出宝贵时间——如果我遗漏了什么,过分强调或低估了某个特定点,请在评论中告诉我。

最佳答案

不确定是 pyqt 还是 python 相关的问题。可能然后以 root 权限运行你会丢失一些环境变量和 XDG_RUNTIME_DIR 就在其中。

这没什么大不了的,因为 Qt 足够聪明,可以回退到合理的默认值,但您可以使用 sudo -E <you_app> 保留当前用户的环境变量。 :

-E' The -E (preserve environment) option indicates to the security policy that the user wishes to preserve their existing environment variables. The security policy may return an error if the -E option is specified and the user does not have permission to preserve the environment.


UPD: 您可以通过 /etc/sudoers 显式指定一组要保留的变量,而不是将所有变量复制到提升的(根)环境(这可能会引起安全问题)。文件。使用 sudo visudo 编辑此文件命令并添加一行:

Defaults        env_keep += "XDG_RUNTIME_DIR"

UPD2:如果您想没有 super 用户权限访问串行设备,请将您的用户添加到设备组(通常称为 dialout):

# check group
>>> ls -l /dev/ttyUSB0
crw-rw---- 1 root dialout 4, 66 Aug 6 12:23 /dev/ttyUSB0
# add your user to a group
>>> sudo usermod -a -G dialout <your_username>

注销 - 组更改后可能需要登录

关于python - 为什么每次 PyQt5 项目都会收到警告 "QStandardPaths: XDG_RUNTIME_DIR not set",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45981317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com