首页 > 编程知识 正文

终极cannot connect to X server couldnt connect to display

时间:2023-05-04 17:04:32 阅读:185037 作者:4902

目前遇到了两种报这个错的情况:

情况一:本地在外网,通过SSH登录到内网服务器。运行代码,

报错:

(1)cannot connect to X server

(2)_tkinter.TclError: couldn't connect to display

或者运行完了也没有任何显示。

环境:本地:windows 10  远程: linux ubuntu 16.04   连接方式:服务器在内网中,本地和内网之间通过VPN连接,然后本地通过SSH登录到服务器

症状:VNC可以远程桌面到服务器,本地ping服务器通,服务器ping本地不通。(这个问题修复之后也是这样,这里只不过是交代一下环境。公司的VPN还挺厉害的,能控制很多东西)

原因:你的代理地址可能被某一个流氓软件给改了!!

代码(代码放在服务器端,本地通过ssh登录到服务器,然后运行这个代码):

img_dir = '/home/data/1.jpg'from matplotlib import pyplot as pltimg = plt.imread(img_dir)plt.imshow(img)plt.show()

mini example

$ export DISPLAY=10.xxx.xx.xxx:0.0$ xarclockError: Can't open display: 10.xxx.xx.xxx:0.0

无论上述的display设置成什么都不行!

或者

$ python3.6Python 3.6.9 (default, Jul 3 2019, 15:36:16) [GCC 5.4.0 20160609] on linuxType "help", "copyright", "credits" or "license" for more information.>>> import cv2>>> cv2.namedWindow('img', 0)

或者在pycharm:

Traceback (most recent call last): File "/home/usr1/abc.py", line 6, in <module> plt.imshow(img) File "/home/usr1/.local/lib/python3.6/site-packages/matplotlib/pyplot.py", line 2677, in imshow __ret = gca().imshow( File "/home/usr1/.local/lib/python3.6/site-packages/matplotlib/pyplot.py", line 926, in gca return gcf().gca(**kwargs) File "/home/usr1/.local/lib/python3.6/site-packages/matplotlib/pyplot.py", line 603, in gcf return figure() File "/home/usr1/.local/lib/python3.6/site-packages/matplotlib/pyplot.py", line 545, in figure **kwargs) File "/home/usr1/.local/lib/python3.6/site-packages/matplotlib/backend_bases.py", line 3252, in new_figure_manager return cls.new_figure_manager_given_figure(num, fig) File "/home/usr1/.local/lib/python3.6/site-packages/matplotlib/backends/_backend_tk.py", line 950, in new_figure_manager_given_figure window = tk.Tk(className="matplotlib") File "/usr/lib/python3.6/tkinter/__init__.py", line 2026, in __init__ self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)_tkinter.TclError: couldn't connect to display "10.xxx.xxx.xxx:0.0"

解决!!

这个问题不知道会不会折腾你一天,反正会折腾我一天!

用尽一切x server(xming xmanager vcxsrv, xshell moba-xterm, .........), ssh,  各种折腾都不管用的根源!!如下:

把你的C,,,L,,,O,,,U,,,D,,,S,,,,S之类的FQ软件卸了。重启电脑!!或者其他你不应该用的代理软件。如果你跟我一样是使用公司VPN上网的话!!!!!

 

然后使用 moba-xterm或者xmanager,它们都会自带xserver。它们启动之后,一般会启动xserver

这样你在moba-xterm或者xshell中使用ssh登录到服务器然后再运行相应代码

就可以在本地show出来图片了

 

情况二:本地PC和服务器PC都在同一个内网,没有使用VPN连接。本地代码在Pycharm中修改提交,执行代码是通过VNC远程到服务器桌面,在桌面中的终端里执行。

出现的症状是:

1,代码在pycharm中远程执行正常  2,但是在VNC远程桌面终端中执行报这个错: :cannot connect to X server

不显示cv2.imshow应该显示的界面。

原因:还是$DISPLAY环境变量引起的。本地pycharm中在settings和run-> configuration中设置好了DISPLAY这个环境变量,但是远程桌面的终端里没有设置好。其实上面这个报错后面跟着的就是远程桌面终端的DISPLAY这个环境变量的值,只不过因为它是空,所以没有显示出来。

解决:可以另外打开一个终端,看一下应该设置成多少:$ echo $DISPLAY

$ echo $DISPLAY# 输出:2.0

然后,在当前报错的终端内按照看到的值进行设置(这个值其实和启动VNC时设置的值一致:$ vncserver -geometry 1920x1080 :2)。如:

$ export DISPLAY=localhost:2.0

然后在原地重新运行代码应就不报这个错了,而且界面能显示出来了。

 

 

 

同样原因导致的问题见:

1,win10 pycharm 打不开 console Couldn't connect to console process Process finished with exit code 129

2,python win10 pycharm远程连接ubuntu显示不了图片 cannot connect to X server 10.xxx.xxx.xxx:0.0

3,_tkinter.TclError: couldn't connect to display

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。