解决linux下使用python打开terminal时报错的问题
作者:小柴i 发布时间:2022-10-06 10:46:25
linux下使用python打开terminal时报错
场景一:在jenkins上执行自动化任务,测试任务执行时使用jenkins用户(有sudo权限),测试脚本在linux执行(后台),执行到以下代码时报错:
os.system(f"/usr/bin/konsole -e {cmd_orin2_10s}")
场景二:测试脚本在本地执行没有问题,本地执行时使用root用户,可正常打开命令窗口
错误日志:
17:44:03 qt.qpa.xcb: could not connect to display
17:44:03 qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
17:44:03 This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
17:44:03
17:44:03 Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, xcb.
解决方法:
从场景1和场景2可对比出,应该是由环境变量引起。从环境变量已经显示窗口这两方面去查找问题,可找到 export DISPLAY=":0.0"
参考文档:
《export DISPLAY=":0.0"》
补充:pycharm 运行没问题但是 terminal(终端)运行却各种 module 问题
问题描述
很多时候你用 pycharm 用习惯了,啥都弄好了,但是却忽略了很多路径上的问题,偶尔需要和其他环境、平台交互的时候,比如写了一个 C# 程序去调用 python 的借口,就相当于 terminal 传参数启动,这个时候就会显示各种各样的 No module 问题 解决办法 究其原因,是因为外部环境在调用 python 接口的时候,要去你的程序中找各个 module,但是如果这些 module 还没有加入到环境变量中,那么就会找不到,因此推荐用下面的语句放在每个用到的 py 文件的最前头
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/../')
这样的操作可以将当前文件的上一级目录整个添加到环境变量中,如此便可以轻松地调用上一级目录下面的所有文件啦
如果你的目录层级很多,当前的目录在一个较深的位置,那么你可以将这个命令稍微改一下,总之将你要使用的所有文件和目录包含进去即可,比如可以
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/../../')
当然如果你只想调用当前文件夹下的所有目录,那么就可以使用
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + './')
总结
很多时候 terminal 运行出现 no module 错误大概都是因为当前文件夹没有加入环境变量导致的
通过上述的命令尝试一下,将跟路径尽可能地加入到环境变量中,即可以随便调用了
来源:https://www.cnblogs.com/aplmmy49y/p/17213642.html


猜你喜欢
- dict获取关键字与值values()>>> d{'p': 34, 'l': 54,
- 1. xlsx to csv:import pandas as pddef xlsx_to_csv_pd(): data_xls = pd.
- 今天大概弄懂了partition by和group by的区别联系。1. group by是分组函数,partition by是分析函数(然
- 一、PHP动态生成第一步:在PHP文件中直接写入JS代码,并在头部声明这是一个JavaScript文件<?php header(
- 一、基本思想本文思想是基于用asp和DOM来读取和存储XML数据,并利用XML数据来存储留言信息,达到同用数据库存储数据的功能。二、XML留
- 前言:MySQL 有很多存储引擎(也叫数据引擎),所谓的存储引擎是指用于存储、处理和保护数据的核心服务。也就是存储引擎是数据库的底层软件组织
- 年关将至,大家对疫情的关注度也愈发提升,本次使用PyQt5撰写100行代码写一个疫情信息快速查看工具。一.准备工作1.PyQt5PyQt 是
- 背景 background css 说明 background-image:url(&q
- 之前的博客里使用tf读取数据都是每次fetch一条记录,实际上大部分时候需要fetch到一个batch的小批量数据,在tf中这一操作的明显变
- 解析url用的类库:python2版本: from urlparse import urlparseimport urllibpython3
- javascript版 俄罗斯方块(Russian box)小游戏,喜欢的朋友可以玩玩。对源代码感兴趣的朋友也可以研究一下。玩法介绍:可以输
- 简介看到了一个能够轻松实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息的模块–psutil模块。这次利用psutil
- 本文为大家分享了vue $emit 和 $on 组件通信,供大家参考,具体内容如下<!DOCTYPE html> <htm
- 1.简介MongoDB是一个基于分布式文件存储的文档数据库,可以说是非关系型(NoSQL,Not Only SQL)数据库中比较像关系型数据
- 本文实例讲述了MHA实现mysql主从数据库手动切换的方法,分享给大家供大家参考。具体方法如下:一、准备工作1、分别在Master和Slav
- 一、CSRF:保护机制Django预防CSRF攻击的方法是在用户提交的表单中加入一个csrftoken的隐含值,这个值和服务器中保存的csr
- 本文实例讲述了wxPython定时器wx.Timer简单应用。分享给大家供大家参考。具体如下:# -*- coding: utf-8 -*-
- 事实上,互联网用户浏览网页的习惯和顾客浏览商店中物品的习惯没有多大差别。用户打开一个新的页面,扫视一些文字,并点击第一个引起他兴趣的链接。在
- <%on error resume nextdim conn,sql,rsset conn=Server.CreateObject(&
- 1 引言这段时间在研究美团爬虫,用的是scrapy-redis分布式爬虫框架,奈何scrapy-redis与scrapy框架不同,默认只发送