如何在Google App Engine中正确导入request_toolbelt?

时间:2019-01-07 23:15:39

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

我正在尝试在Google App Engine中导入requests_toolbelt程序包,但始终出现导入错误。已经在https://toolbelt.readthedocs.io/en/latest/adapters.html#appengineadaptehttps://cloud.google.com/appengine/docs/standard/python/issue-requests处进行了检查,也会给出相同的错误。

它在本地运行良好,但在部署后出现错误:     ImportError:没有名为requests_toolbelt.adapters的模块

我有这个:

import requests
from requests_toolbelt.adapters import appengine

if not os.environ.get('SERVER_SOFTWARE', '').startswith('Google App Engine'):
    appengine.monkeypatch()

requirements.txt具有

requests
requests_toolbelt

2 个答案:

答案 0 :(得分:2)

由于您是在标准环境中使用Python2.7的,因此requests_toolbelt文件中的requirements.txt库不足以将其上传到App Engine,因为它不是{{ 3}}。

要添加它,您可以按照Built-in Third-party Libraries中所述的步骤进行操作:

  • 运行以下命令:

    pip install -t lib -r requirements.txt

    这会将所有软件包安装到本地环境,然后将它们复制到lib文件夹中。 official documentation

  • 创建以下文件,名为appengine_config.py

    from google.appengine.ext import vendor
    # Add any libraries installed in the "lib" folder.
    vendor.add('lib')
    

    请注意,此文件必须与app.yaml位于同一根路径中,并且'lib'字符串代表从该根目录到您在上一点中创建的文件夹的路径。

  • 使用gcloud app deploy

  • 重新部署应用程序

完成后,您应该能够运行应用程序而不会出现与库相关的错误。

请注意,这些步骤仅是标准App Engine环境中Python 2.7中的要求。在Python3或Flexible中,在requirements.txt文件中列出库就足够了。

答案 1 :(得分:0)

还建议我将“ lib”文件夹添加到IDE解释器中。

在像PyCharm这样的IntelliJ IDE中,您可以转到设置->项目->项目解释器->单击设置小按钮->全部显示

enter image description here

然后单击文件夹图标:

enter image description here

然后单击添加图标:

enter image description here

然后选择您的lib文件夹

enter image description here