Reputation: 428
I'm making a program in pyqt4
, using python3.4
and host on Gitlab. When I'm trying to make a build this fails.
This is the .gitlab-ci.yml
file form my project:
before_script:
- apt-get update -qy
- apt-get install -y python3 python3-dev python3-pip python3-pyqt4
- export DISPLAY=:0.0
test:
script:
- python3 main.py
The error is: main.py: cannot connect to X server: 0.0
. I am trying without export DISPLAY=:0.0
and nothing
Upvotes: 2
Views: 2446
Reputation: 59
Would like to suggest an alternative answer to azzamasa's
Using pytest
with pytest-qt
, add a pytest option (preferably in conftest.py) to indicate if the application should show or not:
def pytest_addoption(parser):
parser.addoption('--show-gui', action='store_true')
Use qapp_args fixture to provide the needed arguments -platform offscreen
:
@pytest.fixture(scope="session")
def qapp_args(show_gui: bool):
if not show_gui:
empty_arg_stands_for_exe_path = ''
return [empty_arg_stands_for_exe_path, '-platform', 'offscreen']
return []
Upvotes: 1
Reputation: 2115
I've tried:
['-platform', 'minimal']
in sys.argv for QApplication : Failedxvfb-run: error: xauth command not found
(even after setting the PATH)But QT_QPA_PLATFORM: "offscreen"
work like a charm and saved the day.
example:
pytest:
image: python:3.6
variables:
QT_QPA_PLATFORM: "offscreen"
script:
- pytest tests/
Thanks to steve
Upvotes: 3
Reputation: 6083
If PyQt5 is an option, Qt 5 has the "minimal" platform plugin. To use it, modify the argv passed to QApplication to include ['-platform', 'minimal'].
(reference: https://stackoverflow.com/a/35355906/829568)
For PyQt4, you could use a virtual X Server:
sudo apt-get install xvfb
xvfb-run python render.py
(reference: https://stackoverflow.com/a/13215192/829568)
Upvotes: 3