我正在尝试将networkx与Python一起使用.当我运行此程序时,它会收到此错误.有什么遗漏?
#!/usr/bin/env python
import networkx as nx
import matplotlib
import matplotlib.pyplot
import matplotlib.pyplot as plt
G=nx.Graph()
G.add_node(1)
G.add_nodes_from([2,3,4,5,6,7,8,9,10])
#nx.draw_graphviz(G)
#nx_write_dot(G, 'node.png')
nx.draw(G)
plt.savefig("/var/www/node.png")
Traceback (most recent call last):
File "graph.py", line 13, in <module>
nx.draw(G)
File "/usr/lib/pymodules/python2.5/networkx/drawing/nx_pylab.py", line 124, in draw
cf=pylab.gcf()
File "/usr/lib/pymodules/python2.5/matplotlib/pyplot.py", line 276, in gcf
return figure()
File "/usr/lib/pymodules/python2.5/matplotlib/pyplot.py", line 254, in figure
**kwargs)
File "/usr/lib/pymodules/python2.5/matplotlib/backends/backend_tkagg.py", line 90, in new_figure_manager
window = Tk.Tk()
File "/usr/lib/python2.5/lib-tk/Tkinter.py", line 1650, in __init__
self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, …
Run Code Online (Sandbox Code Playgroud) 我想在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)
同样的错误: …
运行matplotlib
在我的台式PC 中使用该库的代码时,使用该行没有问题:
import matplotlib.pyplot as plt
Run Code Online (Sandbox Code Playgroud)
远在代码中,这是我实际使用绘图功能的地方.
如果我在服务器中运行代码,虽然它只在我matplotlib
之前导入时才有效,并强制它使用Agg
后端.即,我必须在代码的开头添加以下行:
import matplotlib
# Force matplotlib to not use any Xwindows backend.
matplotlib.use('Agg')
Run Code Online (Sandbox Code Playgroud)
(参见这个解释的答案).否则代码将崩溃TclError: no display name and no $DISPLAY environment variable
(例如,请参阅此问题).
问题是:为什么我需要这样做?该解决方案运行良好,但我不知道为什么我不必在我的台式机上执行此操作,但我绝对必须在服务器中运行代码.
我最近安装了适用于Windows 10的Ubuntu应用程序,以便可以在课堂上使用它。
我正在遵循一些神秘的分配指导来“尝试tkinter”。
我按照以下说明在Ubuntu终端窗口中安装了python3-tk软件包:如何在ubuntu / Debian / Linux mint中安装和使用Tkinter。
所以我执行
~$ python3
Run Code Online (Sandbox Code Playgroud)
结果
Python 3.5.2 (default, Aug 18 2017, 17:48:00)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
Run Code Online (Sandbox Code Playgroud)
然后执行以下命令:
>>> import tkinter
>>> tkinter.Tk()
Run Code Online (Sandbox Code Playgroud)
结果错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.5/tkinter/__init__.py", line 1871, in __init__
self.tk = _tkinter.create(screenName, baseName, className, interactive,
wantobjects, useTk, sync, use)
_tkinter.TclError: no display name and no $DISPLAY environment variable
Run Code Online (Sandbox Code Playgroud) python ×3
matplotlib ×2
amazon-ec2 ×1
anaconda ×1
graph ×1
ipython ×1
tkinter ×1
ubuntu ×1
windows-10 ×1
x11 ×1
xming ×1
xserver ×1