This question already has an answer here:
这个问题在这里已有答案:
- Generating a PNG with matplotlib when DISPLAY is undefined 11 answers
当DISPLAY未定义时,使用matplotlib生成PNG 11个答案
I'm trying to run a very simple code that outputs a .png file in a cluster. Here's the code:
我正在尝试运行一个非常简单的代码,在集群中输出.png文件。这是代码:
import matplotlib.pyplot as plt
import numpy as np
x = np.random.randn(60)
y = np.random.randn(60)
plt.scatter(x, y, s=20)
out_png = 'path/to/store/out_file.png'
plt.savefig(out_png, dpi=150)
If I run this code with the command python simple_code.py
in my system which has matplotlib 1.2.1 installed I get the warning:
如果我在我的系统中使用命令python simple_code.py运行此代码并安装了matplotlib 1.2.1,我会收到警告:
Unable to load library icui18n "Cannot load library icui18n:
The .png image is still produced so I have no problems here. But if I use the same command and code in a cluster which has matplotlib 1.3.0 installed it fails with the error:
.png图像仍然生成,所以我没有问题。但是如果我在安装了matplotlib 1.3.0的集群中使用相同的命令和代码,则会失败并显示错误:
Traceback (most recent call last):
File "simple_code.py", line 33, in <module>
plt.scatter(x, y, s=20)
File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 3078, in scatter
ax = gca()
File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 803, in gca
ax = gcf().gca(**kwargs)
File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 450, in gcf
return figure()
File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 423, in figure
**kwargs)
File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py", line 79, in new_figure_manager
return new_figure_manager_given_figure(num, figure)
File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py", line 87, in new_figure_manager_given_figure
window = Tk.Tk()
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1712, in __init__
self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: no display name and no $DISPLAY environment variable
What is happening here?
这里发生了什么?
Add, this is the script I use to login into the cluster:
添加,这是我用来登录集群的脚本:
#!/usr/bin/expect
set login "user"
set addr "address1"
set addr2 "address2"
set pw "password"
spawn ssh -X $login@$addr
expect "$login@$addr\'s password:"
send "$pw\r"
expect "$login@host:"
send "ssh -X $addr2\r"
expect "$login@$addr\'s password:"
send "$pw\r"
interact
1 个解决方案
#1
34
Your problem is in ssh command. What you need to do is to write it this way:
你的问题是在ssh命令中。你需要做的就是这样写:
ssh -X "your_login"
#1
34
Your problem is in ssh command. What you need to do is to write it this way:
你的问题是在ssh命令中。你需要做的就是这样写:
ssh -X "your_login"