【问题标题】:Google App-Engine run setup.py install for own Python applicationGoogle App-Engine 为自己的 Python 应用程序运行 setup.py install
【发布时间】: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


【解决方案1】:

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

如果您想将所有处理程序/模型变成一个单独的库(可能在其他应用程序中重用),您需要给它一个 setup.py 文件并将其托管在您自己的包索引上的其他地方,或作为 git 存储库,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

【讨论】:

  • 您是否还需要my_library/ 目录中的__init__.py 文件?
猜你喜欢
  • 2016-12-28
  • 2013-09-29
  • 1970-01-01
  • 2013-12-20
  • 2016-03-11
  • 2019-07-18
  • 2016-11-02
  • 1970-01-01
  • 2016-06-10
相关资源
最近更新 更多