3

Google App Engine アプリでエラーが発生します

ImportError: main という名前のモジュールがありません

URLに行くとき/foo。アプリ内のすべてのファイルは親ディレクトリにあります。

これが私のものapp.yamlです:

application: foobar
version: 1
runtime: python27
api_version: 1
threadsafe: no

handlers:

- url: /foo.*
  script: main.application

- url: /
  static_files: index.html

- url: /(.*\.(html|css|js|gif|jpg|png|ico))
  static_files: \1
  upload: .*
  expiration: "1d"

これが私のものmain.pyです:

from google.appengine.ext import webapp
from google.appengine.ext.webapp import util

class Handler(webapp.RequestHandler):
    def get(self):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.write('Hello world!') 

def main():
    application = webapp.WSGIApplication([('/foo', Handler)],
                                         debug=False)
    util.run_wsgi_app(application)

if __name__ == '__main__':
    main()

またはに変更main.applicationすると、同じエラーが発生します。なぜこのエラーが発生するのですか?main.pymain

4

3 に答える 3

4

構成は問題ありません - での小さなミスのみ:モジュールから名前main.pyにアクセスする必要があるため、構成は:です。この変更はうまくいくはずです:applicationmainmain.application

application = webapp.WSGIApplication([('/foo', Handler)],
                                     debug=False)
def main():
    util.run_wsgi_app(application)

心配しないでください -applicationオブジェクトは作成時やこのモジュールからのインポート時には実行.run_wsgi_appされません。

于 2013-06-24T00:15:10.407 に答える
2

ドキュメントが言うように、

静的ファイルをアプリケーション コード ファイルと同じにすることはできません。静的ファイル パスが動的ハンドラーで使用されるスクリプトへのパスと一致する場合、そのスクリプトは動的ハンドラーで使用できません。

私の場合、問題はその行でした

upload: .*

main.py を含む、親ディレクトリ内のすべてのファイルと一致しました。これは、動的ハンドラーが main.py を使用できないことを意味していました。修正は、このルールの URL 行が認識したのと同じファイルのみを認識するようにこの行を変更することでした:

upload: .*\.(html|css|js|gif|jpg|png|ico)
于 2013-06-25T20:59:32.823 に答える
2

python27 の使用を開始する方法をご覧ください。CGI と WSGI を混ぜています。ここでは webapp2 を使用する必要があります。

あなたの WSGI main.py :

import webapp2

class Handler(webapp2.RequestHandler):

    def get(self):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.write('Hello World!')


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

CGI と WSGI に関するこのブログ投稿も参照してください: http://blog.notdot.net/2011/10/Migrating-to-Python-2-7-part-1-Threadsafe

于 2013-06-23T23:50:25.820 に答える