PyCharm导入matplotlib.pyplot显示错误

时间:2019-07-30 08:05:33

标签: python matplotlib pycharm

import numpy as np
import matplotlib.pyplot as plt

def main():
    x = np.arange(0, 5, 0.1)
    y = np.sin(x)
    plt.plot(x, y)

if __name__ == '__main__':
    main()

回溯(最近通话最近一次):

  File 
"/Users/tim/workspace/Python/MachineLearn/test.py", line 2, in <module>
    import matplotlib.pyplot as plt
  File "/usr/local/lib/python2.7/site-packages/matplotlib/pyplot.py", line 115, in <module>
    _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
  File "/usr/local/lib/python2.7/site-packages/matplotlib/backends/__init__.py", line 63, in pylab_setup
    [backend_name], 0)
  File "/Applications/PyCharm.app/Contents/helpers/pycharm_matplotlib_backend/backend_interagg.py", line 11, in <module>
    from datalore.display import display
  File "/Applications/PyCharm.app/Contents/helpers/pycharm_display/datalore/display/__init__.py", line 1, in <module>
    from .display_ import *
  File "/Applications/PyCharm.app/Contents/helpers/pycharm_display/datalore/display/display_.py", line 5, in <module>
    from urllib.parse import urlencode
ImportError: No module named parse

以退出代码1完成的过程

=================

Python:2.7.16

PyCharm Professional:2019.2

=================

顺便说一句,在控制台模式下运行的代码正常工作

3 个答案:

答案 0 :(得分:8)

简单答案:禁用“在科学窗口中显示图”(设置->工具-> Python Scientific)或降级PyCharm或将项目移至python3
请记住在代码中添加plt.show()

稍微复杂一点。您需要编写自己的导入钩子才能找到urllib.parseurllib.requestdisplay_.py文件的下一行是请求的。更多信息,请点击此处https://xion.org.pl/2012/05/06/hacking-python-imports/

(我对python 2导入系统还不够熟悉,无法编写它)

答案 1 :(得分:0)

对于python 2使用

from urlparse import urlparse

如果您需要编写与Python2和Python3兼容的代码,则可以使用以下导入

try:
    from urllib.parse import urlparse
except ImportError:
     from urlparse import urlparse

在您的PyCharm项目中:

  • 按Ctrl + Alt + s打开设置
  • 在左列中,选择Project Interpreter
  • 在右上角有一个在您的系统上找到的python二进制文件列表,选择合适的一个
  • 最终单击+按钮以安装其他python模块,在您的情况下,由于缺少解析模块,请安装该模块

答案 2 :(得分:0)

如@Grzegorz Bokota所述,问题出在PyCharm的“科学视图模式”。此模式可以可视化图形,因此可以调用matplotlib,如果您使用的是Python 2,则可以调用它的不兼容版本。此错误已确认为here ,看来我们只需要等待下一个版本即可解决它。