TclError:EC2上没有显示名称和$ DISPLAY环境变量

mea*_*ngs 12 python amazon-ec2 ipython anaconda

我想在Amazon EC2(Linux AMI)上使用iPython.我已经安装了Anaconda并启动了iPython来测试我已经创建的一些脚本.现在我只对在终端(不是笔记本电脑)中运行它感兴趣.

在我的代码的开头我总是这样做:

import json
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
Run Code Online (Sandbox Code Playgroud)

但是,我从文本编辑器尝试了CTRL + C,然后在终端中使用%paste我得到错误:

TclError: no display name and no $DISPLAY environment variable
Run Code Online (Sandbox Code Playgroud)

如果我按照这个建议尝试ssh -X name @ host 没有显示名称和使用tkinter通过ssh的$ DISPLAY环境变量,我得到:

/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
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我尝试了https://superuser.com/questions/249045/x11-forwarding-from-amazon-ec2-ami,但仍然收到警告:

 Warning: untrusted X11 forwarding setup failed: xauth key data not generated
Run Code Online (Sandbox Code Playgroud)

同样的错误:

TclError: no display name and no $DISPLAY environment variable
Run Code Online (Sandbox Code Playgroud)

根据这个建议当DISPLAY未定义时生成带有matplotlib的PNG(这似乎无关紧要,但我已尝试过所有内容)我做了:

import matplotlib
matplotlib.use('Agg')
Run Code Online (Sandbox Code Playgroud)

在导入任何其他内容之前仍然会得到相同的错误.

关于如何解决这个问题的任何想法?我真的很想使用粘贴魔术功能来输入函数/等.

小智 6

这更像是一个 linux/X11 问题而不是一个 python 问题。此外,这个过程可能会有点过分——你最好只在本地运行 ipython 或启动一个网络笔记本。

无论如何,你应该:

  • 安装tigervnc
  • 运行 vncserver(因为这是面向 Internet 的服务器,请使用安全密码或阻止防火墙中的端口)
  • 安装 tk(我想你已经这样做了)
  • 编辑 sshd_config(最有可能是 /etc/ssh/sshd_config)并启用 X11Forwarding(X11Forwarding 是)。
  • 登录到您的服务器,将 -Y 选项传递给 ssh (ssh -Y user@server)

然后您应该能够启动 ipython 并使用 %paste。