syntaxerror outside notebook not name magic invalid get_ipython example python matplotlib ipython spyder

outside - nameerror name get_ipython is not defined



% matplotlib line magic causa SyntaxError en el script de Python (6)

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

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


En lugar de% matplotlib en línea, no es una secuencia de comandos de Python, por lo que podemos escribir así. Funcionará desde IPython import get_ipython get_ipython (). Run_line_magic (''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?

github.com/ContinuumIO/anaconda-issues/issues/264


La sintaxis ''%'' 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.


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 sintaxis 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 .


Si incluye el siguiente código en la parte superior de su script, matplotlib se ejecutará en línea cuando se encuentre en un entorno IPython (como jupyter, complemento de átomo de hidrógeno ...), y seguirá funcionando si matplotlib el script 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'')