App Engine开发服务器修改代码后不重新加载

3 投票
2 回答
1437 浏览
提问于 2025-04-16 14:52

我正在开发一个运行在Google App Engine上的Python应用。我设置了以下的文件夹结构:

approot/
  app.yaml
  index.yaml
  myapp.py
  controllers/
   some_controller.py
   some_controller1.py
  models/
  views/

...etc...

我的问题是,开发服务器并不会在我修改代码时总是自动重新加载,尽管Google的文档上说它会这样做。

只有当我在应用的顶层目录中进行修改时,代码才会重新加载。对于子目录中的任何内容(比如控制器),服务器都不会理会。我每次修改后都得手动停止再启动服务器。

这让我在开发过程中进展缓慢,特别是因为没有重启按钮,你必须先停止再启动。

有没有什么解决办法,还是我做错了?我真的很喜欢项目结构清晰,不想把所有文件都放在顶层目录里。

2 个回答

0

请确认你已经安装了pyobjc这个库。

如果没有安装,开发服务器会像这样发出警告:

用户警告:检测源代码变化不被支持,因为你的Python版本没有包含PyObjC(http://pyobjc.sourceforge.net/)。请安装PyObjC,或者如果这不太实际,可以在这里提交一个bug:http://code.google.com/p/appengine-devappserver2-experiment/issues/list

1

重新加载的机制可能和默认的导入方式以及内置的 __import__ 函数有关。如果你(或者你的框架)用其他聪明的方法加载模块,重新加载器可能就不会察觉到。一个可能的解决办法是,在你的 myapp.py 模块中明确导入一些关键的模块。

撰写回答