2016-05-05 2 views
0

Я просто после урока из hereWxPython не работает на CentOS

1 #!/usr/bin/env python 
    2 import wx 
    3 
    4 app = wx.App(False) # Create a new app, don't redirect stdout/stderr to a window. 
    5 frame = wx.Frame(None, wx.ID_ANY, "Hello World") # A Frame is a top-level window. 
    6 frame.Show(True)  # Show the frame. 
    7 app.MainLoop() 

Я получил сообщение об ошибке в строке 4. Вот сообщение об ошибке.

Невозможно получить доступ к X-дисплею, установлен ли $ DISPLAY правильно?

uname -a 

Linux localhost.localdomain 3.10.0-327.4.5.el7.x86_64 # 1 SMP пн Jan 25 22:07:14 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

python --version 

Python 2.7.5

pip freeze 

WxPython == 2.8.12.0

WxPython-общий == 2.8.12.0

+0

Это через ssh, что вы пытаетесь запустить сценарий? –

+0

wxPython не может использоваться на безголовом дисплее. Для этого вам понадобится X-сервер или какой-либо другой пользовательский интерфейс. –

+0

To: @Cory Shay, да, я нахожусь на хосте Mac и SSH в локальной виртуальной машине, которая запускает CentOS. –

ответ

0

Вы более чем вероятно, необходимо настроить X Forwarding для того, чтобы заставить его работать правильно. Цитата из ответа выше @Giles:

Пересылка X11 должна быть включена как на стороне клиента, так и на стороне сервера.

На стороне клиента -X (капитал X) опция ssh включает перенаправление X11, и вы можете сделать это по умолчанию (для всех соединений или для конкретного Conection) с ForwardX11 yes в ~/.ssh/config.

На стороне сервера X11Forwarding yes должен быть указан в /etc/ssh/sshd_config. Обратите внимание, что по умолчанию нет пересылки (некоторые дистрибутивы включают его по умолчанию /etc/ssh/sshd_config) и что пользователь не может переопределить этот параметр.

Программа xauth должна быть установлена ​​на стороне сервера. Если есть какие-либо программы X11, очень вероятно, что там будет xauth. В маловероятном случае xauth был установлен в нестандартном месте, его можно вызвать через ~/.ssh/rc (на сервере!).

Обратите внимание, что вам не нужно устанавливать какие-либо переменные среды на сервере. DISPLAY и XAUTHORITY будут автоматически установлены на их собственные значения. Если вы запустите ssh и DISPLAY не установлен, значит, ssh не пересылает соединение X11.

Чтобы подтвердить, что ssh пересылает X11, проверьте строку, содержащую Requesting X11 forwarding, на выходе ssh -v -X. Обратите внимание, что сервер не будет отвечать в любом случае.

Смежные вопросы