Google App Engine,既不支持urllib3也不支持请求?

时间:2019-03-17 09:48:17

标签: python python-2.7 google-app-engine google-cloud-platform

部署Google应用程序时,我不断收到以下错误消息:

  

错误:(gcloud.app.deploy)解析文件时发生错误:   [/Users/app.yaml]不支持“请求”库

我将其更改为urllib3,但仍然收到相同的错误。以下是app.yaml:

# entrypoint: main.py
# env: flex
# runtime: python

runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /static
  static_dir: static
- url: /.*
  script: main.app

libraries:
  - name: ssl
    version: latest
  - name: lxml
    version: latest
  - name: urllib3
    version: latest
  - name: flask
    version: latest

以及库的调用:

# from requests import get as rget 
from urllib3 import PoolManager
http = PoolManager()
query = some_query
# page = rget(query)
page = http.request('GET',query)

我似乎无法弄清楚到底是什么问题。我已经看到了以前的堆栈溢出答案,这些答案要求我在lib中进行pip安装,并将其也添加到require.txt中,但是这些似乎都没有任何作用。

是否还有其他功能完全相同但由Google App Engine本地支持的库?

1 个答案:

答案 0 :(得分:0)

App Engine在标准Python 2.7环境中以两种方式支持第三方库。

  • Built-in libraries:如果app.yaml文件中有declared,则会在云中自动启用这些功能。您可能需要使用pip to make them available in the dev server在本地安装它们。
  • 其他第三方库:这些库必须pip安装到应用程序的文件夹中,并作为部署的一部分上载。该文件夹必须位于appengine_config.py中的declared中。这些库不能app.yaml中声明,否则您将得到报告的错误。

requestsurllib3未包含在内置库中,因此您需要:

    appengine_config.py中的
  1. Set up vendored libraries folder
  2. pip install -t <your-lib-folder> requests(我相信urllib3是作为请求的一部分安装的。)
  3. 确保在部署到云时<your-lib-folder>已上传。