TclError: нет отображаемого имени и нет переменной среды DISPLAY на EC2

Я бы хотел использовать iPython на Amazon EC2 (Linux AMI). Я установил Anaconda и запустил iPython для тестирования некоторых скриптов, которые я уже создал. Сейчас я заинтересован в том, чтобы запустить его в терминале ( не в качестве ноутбука).

В начале моего кода я всегда делаю:

import json
import numpy as np
import pandas as pd
from pandas import Series, DataFrame

Однако я попробовал CTRL + C из своего текстового редактора, а затем используя% paste в терминале, я получил ошибку:

TclError: no display name and no $DISPLAY environment variable

Если я попробую ssh -X name @host в соответствии с этим предложением Нет отображаемого имени и переменной $DISPLAY среды с помощью tkinter через ssh, я получаю:

/opt/X11/bin/xauth:  file /Users/adrianp/.Xauthority does not exist
Warning: untrusted X11 forwarding setup failed: xauth key data not generated
X11 forwarding request failed on channel 0

Чтобы исправить эту проблему, я попробовал https://superuser.com/info/249045/x11-forwarding-from-amazon-ec2-ami, но все же получил предупреждение:

 Warning: untrusted X11 forwarding setup failed: xauth key data not generated

И та же ошибка:

TclError: no display name and no $DISPLAY environment variable

За это предложение Создание PNG с matplotlib, когда DISPLAY undefined (что кажется неуместным, но я пробовал все). Я сделал:

import matplotlib
matplotlib.use('Agg')

перед импортом чего-либо еще и по-прежнему получить ту же ошибку.

Любые идеи о том, как решить эту проблему? Я бы очень хотел использовать функцию магии пасты для ввода функций/и т.д.

Ответ 1

Это больше проблема с linux/X11, чем вопрос с python. Кроме того, этот процесс, вероятно, будет чрезмерным - вам лучше всего запустить ipython локально или запустить веб-ноутбук.

В любом случае вам следует:

  • установить tigervnc
  • запустите vncserver (так как это сервер, обращенный к Интернету, используйте защищенную кодовую фразу или заблокируйте порт в брандмауэре).
  • установить tk (думаю, вы уже это сделали)
  • изменить sshd_config (скорее всего /etc/ssh/sshd _config) и включить X11Forwarding (X11Forwarding yes).
  • Вход на ваш сервер, передающий параметр -Y для ssh (ssh -Y user @server)

Затем вы можете запустить ipython и использовать% paste.