2013-08-05 2 views
1

Мой GF пытается следовать за Udacity's Web Development course, но у нее возникла проблема. И я не могу это решить. Это просто в начале, когда нужно создать скрипт Python «hello world», который запускается на AppEngine.Ошибка синтаксиса с помощью простого импорта Python

Таким образом, файлы:

app.yaml:

application: focus-invention-298 
version: 1 
runtime: python27 
api_version: 1 
threadsafe: true 

handlers: 
- url: /.* 
    script: helloworld.app 

helloworld.py:

# -*- coding: utf8 -*- 

​import webapp2 

class MainPage(webapp2.RequestHandler): 
    def get(self): 
     self.response.headers['Content-Type'] = 'text/plain' 
     self.response.write('Hello, Udacity!') 

application = webapp2.WSGIApplication([('/', MainPage)], debug=True) 

Но, когда я запустить приложение (или корыта GUI запуска или dev_appserver.py) и откройте приложение в браузере. Я получаю эту ошибку (в консоли):

Traceback (most recent call last): 
    File "/Users/Kaja/Desktop/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/runtime/wsgi.py", line 196, in Handle 
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler()) 
    File "/Users/Kaja/Desktop/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/runtime/wsgi.py", line 255, in _LoadHandler 
    handler = __import__(path[0]) 
    File "/Users/Kaja/Documents/udacity/helloworld.py", line 3 
    ​import webapp2 
    ^
SyntaxError: invalid syntax 
INFO  2013-08-05 14:06:00,875 module.py:595] default: "GET/HTTP/1.1" 500 - 
ERROR 2013-08-05 14:06:01,012 wsgi.py:219] 
Traceback (most recent call last): 
    File "/Users/Kaja/Desktop/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/runtime/wsgi.py", line 196, in Handle 
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler()) 
    File "/Users/Kaja/Desktop/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/runtime/wsgi.py", line 255, in _LoadHandler 
    handler = __import__(path[0]) 
    File "/Users/Kaja/Documents/udacity/helloworld.py", line 3 
    ​import webapp2 
    ^
SyntaxError: invalid syntax 

Мы находимся на OSX 10.8.4, и когда я запускаю python в терминале, он сообщает мне, что у меня установлена ​​версия 2.7.2. Версия AppEngine launcher (или SDK) - 1.8.2.

Кто-нибудь? Я пробовал так много всего без успеха, что я действительно не знаю, что делать дальше (я не разработчик python), и я действительно хочу, чтобы эта работа работала, чтобы мой GF мог продолжить обучение :)

+0

Возможно, файл был сохранен с окончанием строки Windows? –

+0

Я не должен думать, так как она сделала всю работу в Sublime на Mac. Но я проверю, чтобы быть уверенным. –

+0

Это длинный выстрел; но есть символы * до * '' '' import', которые отбрасывают Python здесь. –

ответ

3

Есть байты до Оператор import (unicode non-broken whitespace characters - главный кандидат), который может вызвать это.

Проверьте первые 50 байт или так:

print repr(open('helloworld.py', 'rb').read(50)) 

Если вы видите последовательность как '\xc2\xa0' то есть UTF-8 кодируются неразрывного пробела там, например.

+0

Приветствия, я действительно не знаю, как они туда попали. И это было \ xc2 да. Во всяком случае, мой GF теперь сможет продолжить свое путешествие к тому, чтобы стать столь же расстроенным, как и без инструментов :) –

+0

'\ xc2' - это * ведущий * байт для последовательности UTF8, он указывает, что другой байт является частью символа. Символы NBSP часто встречаются на веб-страницах с указанием отступов (обычно вы не хотите обворачивать там строку), они являются неприятностью. –

Смежные вопросы