【发布时间】:2019-03-21 21:47:27
【问题描述】:
我意识到这可能是一个超级基本的问题,但我正在使用一些基本教程在 Google App Engine Standard 上开发 Python 应用程序。
其中许多教程都是 MVC,这很棒,但是代码文件没有组织。为了说明,请考虑以下演示:https://github.com/GoogleCloudPlatform/appengine-search-python-java/tree/master/product_search_python。作者在根目录中包含一个admin_handlers.py、一个base_handler.py 和一个handlers.py 文件。任何更多的处理程序,这很快就会变得笨拙。
我熟悉的解决方案是重构为更标准的项目结构,例如:
my_app
models
__init__.py
models_1.py
models_2.py
handlers
__init__.py
handlers_1.py
handlers_2.py
setup.py
因此,在我的应用程序的任何文件中,我都可以调用from my_app.models import model_1,然后访问该子包中专门定义的模型。
但是,我没有看到任何关于 App Engine 标准如何处理部署中的应用程序打包的文档(即在部署应用程序时运行 setup.py install。)
有一些关于 app-engine 如何运行 setup.py install 以打包外部 python 包的帖子,但没有关于 app-engine 如何运行您自己的内容的文章,而且我在他们的教程中没有看到任何包含 setup.py 的示例文件。
App-Engine 是否支持部署期间的应用打包?还是只是太基本以至于他们没有记录?如果我想这样做,我是否必须采用像 Django 这样的框架,还是可以不用?
【问题讨论】:
-
您是要在自己的计算机上运行“系统”还是将其部署到应用引擎?如果您尝试在自己的计算机上运行,安装应用引擎应该会为您提供应用引擎启动器,您可以从中运行和浏览您的应用程序。
-
问题不清楚,你想要一个可以安装在你的应用引擎环境中的 setuptools pip 包吗?
-
是的,@Ian 这正是我想要的。我希望部署的应用程序具有包结构,以便我可以在项目的任何部分调用
from my_project.models import models_1。我将进行编辑以澄清。 -
如果我正确理解你的目标,你想要的是 python 和谷歌应用引擎固有支持的东西并不会破坏这一点。您只需要为每个应该是模块的目录创建一个
__init__.py文件。不需要setup.py。
标签: python google-app-engine google-cloud-platform packaging