2

嗨,我正在使用 Ubuntu:和 Pycharm 最新版本(2019.2):如果我只导入 matplotlib,它不会显示任何错误,但是如果我尝试执行 matplotlib.pyplot 作为 plt,它会显示以下错误:请参阅下面的注释部分

import matplotlib.pyplot as plt
Backend GTK3Agg is interactive backend. Turning interactive mode 
on.
Traceback (most recent call last):
File "/home/sarfi/.local/lib/python3.7/site- 
packages/IPython/core/interactiveshell.py", line 3326, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-2-a0d2faabd9e9>", line 1, in <module>
import matplotlib.pyplot as plt
File "/snap/pycharm- 
community/143/helpers/pydev/_pydev_bundle/pydev_import_hook.py", 
line 21, in do_import
module = self._system_import(name, *args, **kwargs)
File "/home/sarfi/.local/lib/python3.7/site- 
packages/matplotlib/pyplot.py", line 2362, in <module>
install_repl_displayhook()
File "/home/sarfi/.local/lib/python3.7/site- 
packages/matplotlib/pyplot.py", line 126, in 
install_repl_displayhook
ip.enable_gui(ipython_gui_name)
File "/snap/pycharm-community/143/helpers/pydev/_pydev_bundle/pydev_ipython_console_011.py", line 146, in enable_gui
return real_enable_gui(gui, app)
File "/snap/pycharm-community/143/helpers/pydev/pydev_ipython/inputhook.py", line 536, in enable_gui
return gui_hook(app)
File "/snap/pycharm-community/143/helpers/pydev/pydev_ipython/inputhook.py", line 413, in enable_gtk3
self.set_inputhook(create_inputhook_gtk3(self._stdin_file))
AttributeError: 'InputHookManager' object has no attribute '_stdin_file'

注意:我尝试卸载matplotlibpip3重新安装它,我还安装了Six: pip3 install Six,但是问题仍然存在

4

1 回答 1

0

这是一个解决方法:使用不同的后端(来自 gtk/gtk3)

import matplotlib                #only import mpl first
matplotlib.use("agg")            #then set backend
import matplotlib.pyplot as plt 

plt.figure()
plt.plot([1,1])
plt.savefig("name.jpg")

我还没有测试过其他后端,但这有效。当然,这不是永久的解决方案,如果您需要这些数字,它只是一个快速的紧急解决方案。

问题出在 gtk/gtk3(我认为)。也显示在PY-16043 Failed to enable GUI event loop integration for 'gtk' (请参阅https://youtrack.jetbrains.com/issue/PY-16043,这是 BugsBunny 已经放置的链接)。

enable_gtk/enable_gtk3定义方法时发生错误。因此,如果您不使用此后端,则可以避免错误。

于 2021-07-15T14:31:20.617 回答