La magia de la línea% matplotlib causa SyntaxError en el script de Python

Intento ejecutar los siguientes códigos en 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 

Pero tengo este error:

 line 10 %matplotlib inline ^ SyntaxError: invalid syntax. 

Aprecio si alguien me da una explicación.

PD: el código es del proyecto de la competencia Kaggle: Digit Recognizer

Las magias de línea solo son compatibles con la línea de comando de IPython. No se pueden usar simplemente dentro de un script, porque %something no es la syntax de Python correcta.

Si desea hacer esto desde un script, debe obtener acceso a la API de IPython y luego llamar a la función run_line_magic .

En lugar de %matplotlib inline , tendrá que hacer algo como esto en su script:

 from IPython import get_ipython get_ipython().run_line_magic('matplotlib', 'inline') 

Un enfoque similar se describe en esta respuesta , pero utiliza la función magic desuso.

Tenga en cuenta que el script todavía debe ejecutarse en IPython. Bajo vainilla Python, la función get_ipython devuelve None y get_ipython().run_line_magic generará un AttributeError .

La syntax ‘%’ en %matplotlib inline es reconocida por iPython (donde está configurada para manejar los métodos mágicos), pero no por Python, que proporciona un SyntaxError. Aquí se da una solución.

Si incluye el siguiente código en la parte superior de su secuencia de comandos, matplotlib se ejecutará en línea cuando se encuentre en un entorno de IPython (como jupyter, complemento del átomo de hidrógeno …), y seguirá funcionando si matplotlib la secuencia de comandos directamente a través de la línea de comandos ( matplotlib no se ejecutará en línea, y los gráficos se abrirán en una ventana emergente como de costumbre).

 from IPython import get_ipython ipy = get_ipython() if ipy is not None: ipy.run_line_magic('matplotlib', 'inline') 

Debido a que las líneas mágicas solo son compatibles con la línea de comandos IPython que no es Python cl, use: 'exec(%matplotlib inline)' lugar de %matplotlib inline

Hay varias razones por las que esto no funcionaría.

Es posible que matplotlib no esté correctamente instalado. has intentado correr:

 conda install matplotlib 

Si eso no funciona, mire su variable de entorno% PATH%, ¿contiene sus bibliotecas y rutas de acceso de python?

Problema similar en github anaconda

En lugar de% matplotlib en línea, no es una secuencia de comandos de Python, por lo que podemos escribir de esta manera que funcionará desde IPython import get_ipython get_ipython (). Run_line_magic (‘matplotlib’, ‘inline’)