1

「Hello, World」プログラムを Google App Engine (GAE) で実行することはできますが、webapp2 インポートに依存しないバージョンを作成した場合にのみ機能します。インポートが機能しないのはなぜですか? それを修正するために何をする必要がありますか?

動作する helloworld.py のバージョン:

print 'Content-Type: text/plain'
print ''
print 'Hello, World!!'

動作しない helloworld.py のバージョン:

import webapp2

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

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

この 2 番目のバージョンは、空白のページとしてレンダリングされます。

問題は、webapp2 のインポートが機能していないことだと思います。コマンドラインから hello world プログラムと同じディレクトリ内から python を実行すると、次のようになります。

Brians-MacBook-Air-2:app_engine_hello_world brian$ python
Python 2.7.2 (v2.7.2:8527427914a2, Jun 11 2011, 15:22:34) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import webapp2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named webapp2

ただし、次のディレクトリに webapp2.py が表示されます。

Brians-MacBook-Air-2:webapp2 brian$ pwd
/Users/brian/Repos/app_engine_hello_world/build/webapp2

また、次の場所にインストールされた python 2.7 を実行しています。

Brians-MacBook-Air-2:app_engine_hello_world brian$ which python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python

編集: app.yaml ファイルとその他の潜在的に役立つ情報を追加しています...

application: hello-world-cs253
version: 1
runtime: python27
api_version: 1
threadsafe: no

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

SDK / GAE Launcher のバージョン 1.7.0 - 2012-06-26 を使用しています

結果は、Chrome、Firefox、および Safari で同じです

4

2 に答える 2

4

webapp2をインストールする必要はありません。プロジェクトディレクトリへのパスを引数としてdev_appserver.pyを実行すると、のインポートが処理されますwebapp2

app.yamlを配置していますか?それは正しいですか?

Python2.7の場合、Python2.7を使用していることを指定する必要があります。ランタイムはpython27である必要があります

application: your_app
version: 1
runtime: python27    #important
api_version: 1
threadsafe: true

handlers:
- url: /.*
  script: your_app.py

プログラムを実行するためにどのコマンドを実行していますか?

これを行う -

you@your-computer:~/GAE_folder$ python dev_appserver.py /path/to/your/project/directory

そしてlocalhost:8080、ブラウザで開きます。

編集 -

私は問題が何であるかを知っていると思います。私が最初にサイトで与えられた例を試したとき、それは私にも起こりました。

helloworld.py最後にこのコードをファイルに追加します-

def main():
    app.run()

if __name__=='__main__':
    main()
于 2012-07-12T01:39:53.410 に答える