从Pycharm Python控制台写入远程X服务器时没有任何显示

问题描述

我正在使用RaspBerry Pi进行机器人项目,并在单独的PC上进行开发,我想在PC上显示可视化效果,同时在Pycharm Python控制台中运行,以简化调试和扩展程序。

我已经创建了一个SSH隧道来进行X11转发-可以正常运行,但是一旦我勾选 Execution->使用Python控制台运行,PC应该什么时候都不会出现。

>
  • 没有错误或异常出现-没有输出
  • 我在“环境变量”框中设置了disPLAY=localhost:10.0 运行配置和Python控制台设置
  • 从其他python控制台运行(例如,在SSH shell会话中键入python3)可以正常工作。

有什么主意我可以解决这个问题,或者至少开始调试它吗?我怀疑问题在于Pycharm如何启动远程控制台会话,不确定是否某些功能被禁用或以某种方式被沙箱化。

解决方法

我设法解决了这个问题,但是我不知道为什么修复会起作用。

之前:

import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt

这将正常运行,没有例外,但是在我的本地系统上不会产生任何输出。

然后,我更改了pyplot import / alias行,现在为:

import matplotlib
matplotlib.use('TkAgg')
from matplotlib import pyplot as plt

然后它开始工作!

如果有人能解释为什么会有所作为(请记住旧代码在普通控制台中可以正常工作,而在PyCharm控制台中则不能),我很想知道。

作为对此调查的一部分,我认为这是一个较低的水平,因此发现此测试失败:

>>> from tkinter import Tk
>>> window = Tk()
>>> window.mainloop()

在普通控制台中,该窗口出现在Tk()调用之后,在PyCharm控制台中,该窗口出现在mainloop()调用之后。不知道这是否与远程相关。