首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么每次PyQt5项目都会收到警告"QStandardPaths: XDG_RUNTIME_DIR not set“

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

Stack Overflow用户
提问于 2017-08-31 20:19:54
回答 1查看 53.5K关注 0票数 7

我正在使用Python3.6.2和Emacs25在Ubuntu中开发一个PyQt5项目,它是以根权限运行的。这个运行得很好,但是我得到了

代码语言:javascript
复制
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'

在每次运行时从命令行执行。

如果你能让我明白这是什么,以及避免类似的可能的解决方案,那就太好了。

代码

代码语言:javascript
复制
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()

提前感谢您的时间-如果我遗漏了任何东西,过度强调或不强调某一点,请在评论中让我知道。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-31 21:26:54

不确定这是与pyqt还是python相关的问题。然后,您可能会丢失一些环境变量,而XDG_RUNTIME_DIR就是其中之一。

这不是什么大问题,因为Qt足够智能,可以回退到合理的默认值,但您可以使用sudo -E <you_app>保留当前使用的环境变量

-E‘-E (保留环境)选项向安全策略指示用户希望保留其现有环境变量。如果指定了-E选项,并且用户没有保留环境的权限,则安全策略可能会返回错误。

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

代码语言:javascript
复制
Defaults        env_keep += "XDG_RUNTIME_DIR"

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

代码语言:javascript
复制
# 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>

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

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45981317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档