适用于自己的Python应用程序的Google App-Engine运行setup.py安装

时间:2019-03-21 21:47:28

标签: python google-app-engine packaging

我意识到这可能是一个非常基本的问题,但是我正在使用一些基本教程在Google App Engine Standard上开发Python应用程序。

这些教程中的许多教程都是MVC,这很不错,但是代码文件没有组织。为了说明,请考虑以下演示:https://github.com/GoogleCloudPlatform/appengine-search-python-java/tree/master/product_search_python。作者在根目录中包含admin_handlers.pybase_handler.pyhandlers.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。)

有一些关于应用程序引擎如何运行setup.py install来打包外部python软件包的文章,但是没有关于应用程序引擎如何运行自己的内容的材料,我在他们的教程中看不到任何包含{ {1}}个文件。

在部署过程中打包应用程序是App-Engine支持的吗?还是因为它们根本没有文档而如此基础?如果要执行此操作,是否必须采用Django之类的框架,否则是否可以做到?

1 个答案:

答案 0 :(得分:1)

setup.py文件用于库,您尝试部署的是应用程序。

如果要将所有处理程序/模型转换为单独的库(可能在其他应用程序中重用),则需要给它一个setup.py文件并将其托管在其他位置,或者放在自己的程序包中索引或git repo,App Engine会在构建步骤中安装它。

否则,您可以将这些文件作为应用程序的一部分包含在内,而无需setup.py

.
├── main.py
├── my_library
│   ├── __init__.py
│   ├── handlers
│   │   ├── __init__.py
│   │   ├── handlers_1.py
│   │   └── handlers_2.py
│   └── models
│       ├── __init__.py
│       ├── models_1.py
│       └── models_2.py
└── requirements.txt

并在main.py中使用它们,例如:

from my_library.models import model_1