如何在 Google App Engine 中包含第三方 Python 库?
- 2025-02-14 09:50:00
- admin 原创
- 42
问题描述:
如何在 Google App Engine 中添加非 Google 提供的第三方 Python 库?我尝试在 Google App Engine 中使用 BeautifulSoup,但无法做到。但我的问题是我想在 Google App Engine 中使用任何库。
解决方案 1:
Google 已提供在 GAE 项目中包含第三方库的文档化方法。
请参阅Python 2.7 文档中的库的“向应用程序添加第三方包”部分。
如果您想要包含其他纯 Python 第三方软件包,可以通过设置 vendoring 来实现。Vendoring 允许您将软件包安装到项目的子目录中并将其包含在代码中。要使用 vendoring,请在项目的根目录中创建(或修改)appengine_config.py。
from google.appengine.ext import vendor
# Add any libraries installed in the "lib" folder.
vendor.add('lib')
然后将所有库的源代码放入你的lib
目录中
> pip install beautifulsoup4 -t lib
因此你的项目目录结构如下所示:
project
- lib
- bs4
- your_code.py
这将允许你的项目的源文件导入库的包/模块,就像它们被添加到你的一样PYTHON_PATH
。例如:
# file: your_code.py
import bs4 # no need for 'from lib import bs4'
# do stuff with bs4...
您还可以通过以下命令轻松安装 requirements.txt 文件中的所有内容
> pip install -t lib -r requirements.txt
解决方案 2:
实际上我认为这个答案更适合这里。
如果您想使用此列表中未包含的第三方库,则必须手动添加它们。
为了手动包含任何其他库,您必须将它们放在所在目录中app.yaml
。例如,如果您有以下结构:
hello
├── libs
│ └── bs4
├── hello.py
└── app.yaml
然后hello.py
你必须在文件的开头放入这两行:
import sys
sys.path.insert(0, 'libs')
完成后,您将能够使用放在该libs
目录中的任何第三方库。
例如:
from bs4 import BeautifulSoup
解决方案 3:
您只需将包含要使用的库的文件夹复制到您的应用引擎项目中。
然后,当您部署时,它会与您的应用程序一起上传并可供使用。
编辑:杰西的回答是我现在该怎么做。那就这么做吧!
解决方案 4:
这里的工作方式是:
import sys
# sys.path.insert(0, 'libs') #"Old" way, not working for me.
sys.path.append(os.path.join(os.path.dirname(__file__), "libs")) # This works!
然后正常导入:
from bs4 import BeautifulSoup
解决方案 5:
只需将 Beautifulsoup 放在项目根目录中,然后将其全部上传即可
解决方案 6:
pip install -t lib 包名称
lib:第三方库的位置
然后您就可以像使用 ipython 或终端中的普通库一样使用这个包。
解决方案 7:
2024 年更新,供任何想弄清楚这一点的人参考
我在这里找到了答案: https: //groups.google.com/g/google-appengine/c/e21mD63LCrs
他说
供应商提供的方法(安装到 lib/ 并添加 appengine_config.py 文件)对于标准环境中的 Python 2.7 是正确的:
https://cloud.google.com/appengine/docs/standard/python/tools/using-libraries-python-27
标准环境中的 Python 3.7 和灵活环境中的所有 Python 版本都使用 virtualenv 并将安装 requirements.txt 中指定的库,因此您不需要创建 lib 文件夹,并且 appengine_config.py 将被忽略:
https://cloud.google.com/appengine/docs/standard/python3/specifying-dependencies
https://cloud.google.com/appengine/docs/flexible/python/runtime#dependencies
Compute Engine 是一个完全不同的系统,它以虚拟机而不是应用程序的方式工作,所以恐怕这些都不适用于那里。