2016-02-24 39 views
14

próbuję uruchomić następujące kody na Spyder (Python 2.7.11):% linia matplotlib magia powoduje SyntaxError w skrypt Pythona

# -*- 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 

Ale mam ten błąd:

line 10 
    %matplotlib inline 
    ^
SyntaxError: invalid syntax. 

Doceniam jeśli ktokolwiek daje mi wyjaśnienie.

P.S. kod pochodzi z projektu konkursowego Kaggle: Digit Recognizer

+0

Czy masz zainstalowane inne dystrybucje naukowe? https://github.com/ContinuumIO/anaconda-issues/issues/264 – GLaDOS

+0

Używam Anacondy dla Pythona 2.7.11, zainstalowanych pand, nump, scipy, matplotlib, scikit-learn 0.17. ... – John

+0

także theano 0.8.0.dev0 – John

Odpowiedz

0

Istnieje kilka powodów, dla których nie byłoby to możliwe.

Jest możliwe, że matplotlib nie jest poprawnie zainstalowany. próbowałeś trwania:

conda install matplotlib 

Jeśli to nie działa, spójrz na swojej% PATH% zmiennej środowiskowej, czy zawiera bibliotek i ścieżki Pythona?

Similar problem on github anaconda

+0

Dziękuję za informacje, uruchomiłem "conda install matplotlib" i otrzymałem kilka aktualizacji. Ale wciąż ten sam błąd. – John

+0

Co masz na myśli? jakie aktualizacje? – GLaDOS

3

Składnia „%” w %matplotlib inline jest rozpoznawany przez ipython (gdzie jest on skonfigurowany do obsługi magicznych metod), ale nie pyton się, co daje SyntaxError. Here is given one solution.

+0

Myślałem, że to był problem, dopóki nie zorientowałem się, że spyder jest związany z ipythonem, to znowu może być problem. – GLaDOS

+0

Ups. Zaskakująco, istnieje wiele problemów z matplotlib w Spyder. – Silvia07

+0

Dziękuję za odpowiedź. Jednak nawet uruchomić skrypt na konsoli iPython, nadal daje mi ten sam błąd. – John

22

Magia linii jest obsługiwana tylko przez wiersz poleceń IPython. Nie można go używać w takim skrypcie, ponieważ nie jest to poprawna składnia Pythona.

Jeśli chcesz zrobić to ze skryptu, musisz uzyskać dostęp do API IPython, a następnie wywołać funkcję run_line_magic.

Zamiast %matplotlib inline, trzeba będzie zrobić coś takiego w swoim skrypcie:

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

Podobne podejście jest opisane w this answer, ale korzysta z przestarzałej magic funkcję.

Należy zauważyć, że skrypt nadal musi działać w IPython. Pod pseudonimem waniliowym funkcja get_ipython zwraca None, a get_ipython().run_line_magic powoduje podniesienie wartości AttributeError.

+0

Dziękuję za sugestię. Próbowałem Twojego podejścia i dostałem kolejną err: ImportError: Żaden moduł nie nazwał movesem (ponieważ iPython uruchamia kod "from six. Import suwaka, zmniejsz"), próbuję dowiedzieć się, dlaczego tak się dzieje. – John

+4

Dziękuję za sugestię, ale dostałem ten błąd "AttributeError:" Obiekt NoneType 'nie ma atrybutu' run_line_magic'', Czy możesz pomóc Dzięki –

+0

@Always_Beginner brzmi to tak, jakbyś używał normalnej powłoki Pythona, w którym to przypadku ' get_ipython() 'zwraca' Brak'. Magia linii jest obsługiwana tylko w IPython. – kazemakase