시나리오 1: jenkins에서 자동화된 작업을 실행하고, 테스트 작업을 실행할 때 jenkins 사용자(sudo 권한 포함)를 사용하고, 테스트 스크립트는 Linux에서 실행됩니다( background), 다음 코드 실행 시 오류 보고:
os.system(f"/usr/bin/konsole -e {cmd_orin2_10s}")
시나리오 2: 테스트 스크립트의 로컬 실행에는 문제가 없습니다. 로컬에서 실행할 경우 루트 사용자를 사용하여 명령 창을 정상적으로 열 수 있습니다
Error log:
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.
Solution:
시나리오 1에서 시나리오 2와 비교하면 환경 변수에 의해 발생함을 알 수 있습니다. 환경 변수와 표시 창의 두 가지 측면에서 문제를 찾으려면 export DISPLAY=":0.0"
많음 때로는 pycharm을 사용하는 데 익숙해지고 모든 작업을 수행하지만 많은 경로 문제를 무시합니다. 예를 들어 때때로 다른 환경 및 플랫폼과 상호 작용해야 하는 경우 Python을 호출하기 위해 C# 프로그램을 작성하는 것은 변명과 같습니다. 매개변수를 전달하여 터미널이 시작됩니다. 이때 다양한 모듈 없음 문제가 표시됩니다. 그 이유는 외부 환경이 Python 인터페이스를 호출할 때 프로그램에서 다양한 모듈을 찾아야 하는데 이러한 모듈이 여전히 있는 경우입니다. 환경 변수에 추가되지 않으므로 발견되지 않습니다. 따라서 사용되는 각 py 파일 앞에 다음 명령문을 사용하는 것이 좋습니다
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/../')
이 작업은 전체 상위 디렉터리를 저장할 수 있습니다. current file 상위 디렉터리 아래의 모든 파일을 쉽게 호출할 수 있도록 환경 변수에 추가하세요.
디렉터리 수준이 많고 현재 디렉터리가 더 깊은 위치에 있는 경우 이 명령을 약간 변경할 수 있습니다. 간단히 말해서 사용하려는 모든 파일과 디렉터리를 포함하면 됩니다. 예를 들어
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/../../')
물론 현재 폴더의 모든 디렉터리를 호출하려면
위 내용은 Linux에서 Python을 사용하여 터미널을 열 때 오류를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!