如何为谷歌应用引擎打包python3模块

Car*_*etz 5 google-app-engine python-3.x google-cloud-platform google-app-engine-python

我试图弄清楚如何使用 Python 3(标准)将内部包添加到 Google App Engine 部署中。

对于 Python 2,打包模块的方法是使用本地lib/文件夹和appengine_config.py. 这似乎不再适用于 Python 3?至少我的应用程序找不到lib/文件夹中的模块。

对于 Python 3,可以只pip3 install -t .使用包。但这会变得非常混乱,因为所有软件包都刚刚安装在应用程序根目录中,并且还将添加到我们应用程序的 git 存储库中。

我们不能使用,requirements.txt因为该模块是内部的,并且在 PyPI 上不可用。

是否有另一种使用 Python 3 为 Google App Engine 打包模块的方法?

Dus*_*ram 4

Python 3.7 标准运行时是一个“惯用的”Python 运行时,这意味着它不会自动将特殊lib目录添加到模块的搜索路径中。

您应该继续将私有模块“供应”到lib目录中,但您需要更改导入它们的方式。

如果你的私有包是foobar,并且你已经完成了pip install -t lib foobar,那么在你的项目中,而不是:

import foobar
Run Code Online (Sandbox Code Playgroud)

你做:

import lib.foobar
Run Code Online (Sandbox Code Playgroud)

(您还需要将一个空__init__.py文件添加到您的lib目录中,以使其成为一个模块。)