% matplotlib line magic вызывает SyntaxError в скрипте Python
Я пытаюсь запустить следующие коды на 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
Но я получил эту ошибку:
line 10
%matplotlib inline
^
SyntaxError: invalid syntax.
Я ценю, если кто-нибудь даст мне объяснение.
PS код из проекта конкурса Kaggle: Digit Recognizer
Ответы
Ответ 1
Линейные магии поддерживаются только командной строкой IPython. Они не могут просто использоваться внутри скрипта, потому что %something
не соответствует синтаксису Python.
Если вы хотите сделать это из сценария, вам нужно получить доступ к API-интерфейсу IPython, а затем вызвать функцию run_line_magic
.
Вместо %matplotlib inline
вам нужно будет сделать что-то подобное в своем скрипте:
from IPython import get_ipython
get_ipython().run_line_magic('matplotlib', 'inline')
Подобный подход описан в этом ответе, но он использует устаревшую magic
функцию.
Обратите внимание, что сценарий по-прежнему должен выполняться в IPython. Под ванильным Python функция get_ipython
возвращает None
и get_ipython().run_line_magic
будет поднимать AttributeError
.
Ответ 2
Поскольку магии строк поддерживаются только командной строкой IPython, а не Python cl, используйте: 'exec(%matplotlib inline)'
вместо %matplotlib inline
Ответ 3
Синтаксис "%" в %matplotlib inline
распознается iPython (где он настроен для обработки магических методов), но не сам Python, который выдает SyntaxError.
Здесь дано одно решение.
Ответ 4
Если вы matplotlib
следующий код в начало вашего скрипта, matplotlib
будет запускаться встроенным, когда в среде IPython
(например, jupyter, plug-in...), и он будет работать, если вы запустите скрипт напрямую через командную строку (matplotlib
не будет запущена в линию, и диаграммы откроются во всплывающих окнах, как обычно).
from IPython import get_ipython
ipy = get_ipython()
if ipy is not None:
ipy.run_line_magic('matplotlib', 'inline')
Ответ 5
Есть несколько причин, почему это не сработает.
Возможно, что matplotlib установлен неправильно. вы пробовали работать:
conda install matplotlib
Если это не работает, посмотрите на переменную окружения% PATH%, содержатся ли в ней библиотеки и пути python?
Аналогичная проблема для github anaconda
Ответ 6
Это тот случай, когда вы используете Джулию:
Аналогом IPython% matplotlib в Julia является использование пакета PyPlot, который предоставляет интерфейс Julia для Matplotlib, включая встроенные графики в записных книжках IJulia. (Эквивалент numpy уже загружен по умолчанию в Julia.) Учитывая PyPlot, аналог встроенного% matplotlib использует PyPlot, поскольку PyPlot по умолчанию использует встроенные графики в IJulia.
Ответ 7
Вместо% matplotlib inline это не скрипт python, поэтому мы можем писать так, как он будет работать из импорта IPython get_ipython get_ipython(). Run_line_magic ('matplotlib', 'inline')