%matplotlib line magic在Python脚本中导致SyntaxError

Joh*_*ohn 43 python matplotlib ipython spyder

我尝试在Spyder上运行以下代码(Python 2.7.11):

# -*- coding: utf-8 -*-

import numpy as np
import pandas as pd

%matplotlib inline

import matplotlib.pyplot as plt
import matplotlib.cm as cm

import tensorflow as tf

# settings
LEARNING_RATE = 1e-4
# set to 20000 on local environment to get 0.99 accuracy
TRAINING_ITERATIONS = 2000        

DROPOUT = 0.5
BATCH_SIZE = 50

# set to 0 to train on all available data
VALIDATION_SIZE = 2000

# image number to output
IMAGE_TO_DISPLAY = 10
Run Code Online (Sandbox Code Playgroud)

但我得到了这个错误:

line 10
    %matplotlib inline
    ^
SyntaxError: invalid syntax.
Run Code Online (Sandbox Code Playgroud)

如果有人给我解释,我很感激.

PS代码来自Kaggle竞赛项目:Digit Recognizer

kaz*_*ase 56

线魔法只受IPython命令行支持.它们不能简单地在脚本中使用,因为%something它不是正确的Python语法.

如果要从脚本执行此操作,则必须访问IPython API,然后调用该run_line_magic函数.

而不是%matplotlib inline,你将不得不在你的脚本中做这样的事情:

from IPython import get_ipython
get_ipython().run_line_magic('matplotlib', 'inline')
Run Code Online (Sandbox Code Playgroud)

此答案中描述了类似的方法,但它使用了已弃用的magic函数.

请注意,该脚本仍需要在IPython中运行.在香草的Python的get_ipython函数返回None,并get_ipython().run_line_magic会引发AttributeError.

  • 谢谢你的建议,但我得到了这个错误`AttributeError:'NoneType'对象没有属性'run_line_magic'`,你能帮忙谢谢吗 (7认同)

小智 9

由于仅IPython命令行不支持换行符,Python cl不支持换行符,因此请使用:'exec(%matplotlib inline)'而不是%matplotlib inline


小智 5

语法'%'in %matplotlib inline被iPython识别(设置它来处理魔术方法),但不是Python本身,它给出了一个SyntaxError. 这给出了一个解决方案.


小智 5

如果您在脚本顶部包含以下代码,matplotlib则在IPython环境中(例如jupyter,hydrogen atom插件...)将以内联方式运行,并且如果您直接通过命令行启动脚本,它将仍然有效(matplotlib不会内联运行,图表将照常在弹出窗口中打开)。

from IPython import get_ipython
ipy = get_ipython()
if ipy is not None:
    ipy.run_line_magic('matplotlib', 'inline')
Run Code Online (Sandbox Code Playgroud)


GLa*_*DOS 2

有几个原因可以解释为什么这行不通。

可能是 matplotlib 没有正确安装。你有没有尝试过运行:

conda install matplotlib
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,请查看您的 %PATH% 环境变量,它是否包含您的库和 python 路径?

github anaconda 上有类似问题