Python ImportError-GAE中没有名为main的模块
在我的谷歌应用程序引擎应用程序中,我得到了错误 ImportError:没有名为main的模块 当转到URLPython ImportError-GAE中没有名为main的模块,python,google-app-engine,importerror,Python,Google App Engine,Importerror,在我的谷歌应用程序引擎应用程序中,我得到了错误 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:
/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.py
或只是main
时,我会收到相同的错误。为什么会发生此错误?请看一下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的博文:您的配置正常-仅针对
main.py
中的一个小错误:您需要从main
模块访问应用程序的名称,因此配置为:main.application
。这一变化应该起到以下作用:
application = webapp.WSGIApplication([('/foo', Handler)],
debug=False)
def main():
util.run_wsgi_app(application)
别担心,应用程序
对象不会在创建时运行,也不会从该模块导入时运行,它只会在显式的所有应用程序上运行,比如。运行wsgi\u app
,或者在谷歌的内部架构中运行。,正如
静态文件不能与应用程序代码文件相同。如果是静态的
文件路径匹配动态处理程序中使用的脚本的路径
脚本将不可用于动态处理程序
就我而言,问题在于线路
upload: .*
匹配父目录中的所有文件,包括main.py。这意味着main.py对动态处理程序不可用。修复方法是将此行更改为仅识别此规则的URL行识别的相同文件:
upload: .*\.(html|css|js|gif|jpg|png|ico)
谢谢,我应该使用webapp2。然而,它仍然不起作用。作品精美;当python脚本不是主请求处理程序时(即仅适用于/foo.*
),问题似乎会发生。请解释。您的意思是:“当python脚本不是中的主请求处理程序时”,它只处理以/foo
开头的URL,而不是基本URL/
。但是您没有为“/”创建处理程序,还有:ImportError:没有名为main的模块?此问题是否已解决。index.html是/
的处理程序。问题没有解决。