GUI не работает с -X, но работает с -Y (matplotlib)

На сервере Ubuntu 18.04 с использованием дистрибутива python anaconda 3 я получаю следующую ошибку при попытке построить что-то с помощью matplotlib:

Traceback (most recent call last): File "fft_gen_3d.py", line 82, in plt.pcolormesh(t, f, Sxx) File "/home/admin/anaconda3/lib/python3.6/site-packages/matplotlib/pyplot.py", line 3277, in pcolormesh ax = gca() File "/home/admin/anaconda3/lib/python3.6/site-packages/matplotlib/pyplot.py", line 984, in gca return gcf().gca(**kwargs) File "/home/admin/anaconda3/lib/python3.6/site-packages/matplotlib/pyplot.py", line 601, in gcf return figure() File "/home/admin/anaconda3/lib/python3.6/site-packages/matplotlib/pyplot.py", line 548, in figure **kwargs) File "/home/admin/anaconda3/lib/python3.6/site-packages/matplotlib/backend_bases.py", line 161, in new_figure_manager return cls.new_figure_manager_given_figure(num, fig) File "/home/admin/anaconda3/lib/python3.6/site-packages/matplotlib/backend_bases.py", line 167, in new_figure_manager_given_figure canvas = cls.FigureCanvas(figure) File "/home/admin/anaconda3/lib/python3.6/site-packages/matplotlib/backends/backend_qt5agg.py", line 24, in init super(FigureCanvasQTAgg, self).init(figure=figure) File "/home/admin/anaconda3/lib/python3.6/site-packages/matplotlib/backends/backend_qt5.py", line 234, in init _create_qApp() File "/home/admin/anaconda3/lib/python3.6/site-packages/matplotlib/backends/backend_qt5.py", line 125, in _create_qApp raise RuntimeError('Invalid DISPLAY variable') RuntimeError: Invalid DISPLAY variable

Все онлайн-решения просто используют строку:

plt.switch_backend('agg')

Однако для меня это не работает. Что ДЕЙСТВИТЕЛЬНО работает, так это ssh'ing с -Y вместо -X. Что тут происходит?

Не то, чтобы некоторые дистрибутивы, например Debian, измените настройки безопасности по умолчанию. Пожалуйста, укажите, какой из них вы используете.

o11c 20.08.2018 19:48

Сервер Ubuntu 18.04. Отредактировал и исходный пост. Спасибо.

SHB11 20.08.2018 21:59
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
2
71
0

Другие вопросы по теме