这适用于本地开发。但是,当我部署到生产环境时,我遇到了问题。我收到的错误如下:
Traceback (most recent call last):
File "/python27_runtime/python27_lib/versions/1/google/appengine/runtime/wsgi.py",
line 196, in Handle
handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
File "/python27_runtime/python27_lib/versions/1/google/appengine/runtime/wsgi.py",
line 255, in _LoadHandler
handler = __import__(path[0]) ImportError: No module named shamn
这是我的 app.yaml 文件供参考:
application: shaman-labz
version: 1-4
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /css
static_dir: css
- url: /s
static_dir: s
- url: /api.*
script: shamn.app
- url: /.*
script: helloworld.app
libraries:
- name: jinja2
version: latest
我已经尝试了我能想到的一切来仔细检查任何潜在的命名冲突。helloworld.app 适用于本地和云,但 /api.* 显然正确映射到 shamn.app,但由于某种原因没有看到“shamn”。我已经检查并三次检查了根目录中是否存在 shamn.py(与 app.yaml 和 helloworld.py 相同的目录)。我重命名为 shamn.py,因为之前我有一个名为 shaman 的静态目录,我认为它可能会导致云中的冲突。我什至尝试从 1.3 --> 1.4 更改版本以确保一切都是干净的......等等......仍然无法弄清楚为什么会发生这种情况......请注意,在该过程的每个步骤中,我都验证了推送到云端之前的本地开发环境。因为这纯粹是服务器端问题,
作为参考,这是我非常简单的测试 shamn.py(我将再次尝试并重命名)[更新-只是为了删除任何未知数,我从等式中删除了 json...
import jinja2
import os
#import json
jinja_environment = jinja2.Environment(
loader=jinja2.FileSystemLoader(os.path.dirname(__file__)))
import webapp2
class MainPage(webapp2.RequestHandler):
def get(self):
template_values = {
'greetings': [],
'url': 'url',
'url_linktext': 'url_linktext'
}
template = jinja_environment.get_template('index.html')
self.response.out.write(template.render(template_values))
class testclass(webapp2.RequestHandler):
def get(self):
self.response.out.write('hello world from testclass.get')
def post(self):
#jsonobj = json.loads(self.request.body)
#self.response.out.write(json.dumps(jsonobj))
self.response.out.write(self.request.body)
app = webapp2.WSGIApplication([
('/api/test.*', testclass),
('/api.*', MainPage)
],debug=True)
这适用于开发,但不适用于生产。是的,'index.html' 被验证存在(与 helloworld.app 共享),所以我想我可以排除)。请注意,我断断续续地与 GAE 合作了很多年,我从来没有这么难过,而且在一些看似如此简单的事情上。我不得不破解我所有的基本代码,现在我又回到了一堆代码……离线工作两周而不推送到云端的缺点之一(这可能更早被发现)。
任何帮助将不胜感激。
...更新,这是第二天早上,我仍然很难过...接下来我要做的就是创建一个新文件。我想要完成的只是使用简化的 xmlhttprequest 将一些 json 从客户端发布到服务器。这不应该是跨域问题,因为页面是从同一个域加载的。此外,该请求已经足够远,至少可以识别应该存在 shamn(一个 python 模块)但它找不到它。这已经重命名过一次,所以我将只是“修补”,看看我如何找到解决方案。主要问题是每次我尝试更改代码时都需要重新上传到云端,因为我无法在开发中复制。