मैं ऐसे परीक्षण चलाने का प्रयास कर रहा हूँ जिनके लिए CircleCI पर pytest-qt
(PySide2 संवादों के परीक्षण के लिए) की आवश्यकता है। मुझे निम्नलिखित त्रुटि प्राप्त हो रही है:
xdpyinfo was not found, X start can not be checked! Please install xdpyinfo!
============================= test session starts ==============================
platform linux -- Python 3.6.8, pytest-5.0.0, py-1.8.0, pluggy-0.12.0 -- /home/circleci/project-caveman/venv/bin/python3
cachedir: .pytest_cache
PySide2 5.13.0 -- Qt runtime 5.13.0 -- Qt compiled 5.13.0
rootdir: /home/circleci/project-caveman
plugins: cov-2.7.1, xvfb-1.2.0, qt-3.2.2
collected 1 item
tests/test_main.py::test_label_change_on_button_press Fatal Python error: Aborted
Aborted (core dumped)
Exited with code 134
और मैं इस कॉन्फ़िगरेशन फ़ाइल का उपयोग कर रहा हूं:
version: 2
jobs:
build:
working_directory: ~/project-caveman
docker:
- image: circleci/python:3.6.8-stretch
steps:
- checkout
# Dependencies
- restore_cache:
keys:
- venv-{{ .Branch }}-{{ checksum "setup.py" }}
- venv-{{ .Branch }}-
- venv-
- run:
name: Install dependencies
command: |
python3 -m venv venv
. venv/bin/activate
pip install -e .[test] --progress-bar off
- save_cache:
key: venv-{{ .Branch }}-{{ checksum "setup.py" }}
paths:
- "venv"
# Tests
- run:
name: Pytest
command: |
mkdir test-reports
. venv/bin/activate
xvfb-run -a pytest -s -v --doctest-modules --junitxml test-reports/junit.xml --cov=coveralls --cov-report term-missing
- store_test_results:
path: test-reports
- run:
name: Coveralls
command: coveralls
किसी भी मदद की बहुत सराहना की जाती है, अग्रिम धन्यवाद।
2 जवाब
मैंने स्थानीय रूप से कंटेनर circleci/python:3.6.8-stretch
खींच लिया है, आपके भंडार को क्लोन किया है और परीक्षणों को निष्पादित करने का प्रयास किया है, जबकि मैं त्रुटि को पुन: उत्पन्न कर सकता हूं।
पहली बात यह है कि क्यूटी रनटाइम के लिए डिबग मोड को सक्षम करना है ताकि यह त्रुटियों पर कुछ जानकारी प्रिंट कर सके। यह सेटिंग परिवेश चर QT_DEBUG_PLUGINS
द्वारा किया जा सकता है:
$ QT_DEBUG_PLUGINS=1 pytest -sv
अब यह तुरंत स्पष्ट हो गया है कि परीक्षण चलाने के लिए कंटेनर में क्या गुम है। उपरोक्त आदेश के आउटपुट से एक स्निपेट:
Got keys from plugin meta data ("xcb")
QFactoryLoader::QFactoryLoader() checking directory path "/usr/local/bin/platforms" ...
Cannot load library /home/circleci/.local/lib/python3.6/site-packages/PySide2/Qt/plugins/platforms/libqxcb.so: (libxkbcommon-x11.so.0: cannot open shared object file: No such file or directory)
QLibraryPrivate::loadPlugin failed on "/home/circleci/.local/lib/python3.6/site-packages/PySide2/Qt/plugins/platforms/libqxcb.so" : "Cannot load library /home/circleci/.local/lib/python3.6/site-packages/PySide2/Qt/plugins/platforms/libqxcb.so: (libxkbcommon-x11.so.0: cannot open shared object file: No such file or directory)"
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, webgl, xcb.
Aborted (core dumped)
इसे ठीक करना आसान है - libxkbcommon-x11-0
पैकेज इंस्टॉल करें:
$ sudo apt update && sudo apt install -y libxkbcommon-x11-0
इस लाइन को सर्किलसीआई कॉन्फ़िगरेशन में जोड़ें (कहीं परीक्षण कार्य से पहले, उदाहरण के लिए उस नौकरी में जहां आप पैकेज निर्भरता स्थापित करते हैं) और परीक्षण ठीक चलना चाहिए।
इसके अलावा, वैश्विक स्तर पर QT_DEBUG_PLUGINS=1
सेट करना समझ में आता है ताकि आप भविष्य में Qt रनटाइम विफलताओं पर प्रतिक्रिया कर सकें।
xdpyinfo नहीं मिला, X प्रारंभ की जाँच नहीं की जा सकती! कृपया xdpyinfo स्थापित करें!
अगर आप उस चेतावनी से छुटकारा पाना चाहते हैं, तो x11-utils
इंस्टॉल करें:
$ sudo apt install x11-utils
Centos6.5 में केवल चलाएं:yum xdpyinfo इंस्टॉल करें, और इसे सफलतापूर्वक हल करें
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।