使用Google Cloud Build部署到Google App Engine时,依赖项(requirements.t



在将应用程序部署到Google App Engine(Python 2.7(时,我遇到了一个奇怪的依赖性问题。

我已经在requirements.txt文件中指定了我的依赖项:

Flask==1.0.2
werkzeug>=0.14
flask-cors
twilio
httplib2
gunicorn
Jinja2
google-cloud-ndb
exponent_server_sdk

当使用requirements.txt文件夹中的pip在本地安装时,这些软件可以与本地开发服务器配合使用。

但是,当我部署到应用程序引擎时,模块exponent_server_sdk似乎尚未安装(ImportError:没有名为exponent.server_sdk的模块(。

我通常通过推送到git存储库进行部署,然后使用Google Cloud Build("gcr.io/Cloud-builder/gcloud"(进行部署。当我部署时没有错误,requirements.txt文件中的其他依赖项也可以正常工作,如twilio或Jinja2。

在调查这一点的同时,我尝试使用gcloud应用程序部署直接从我的开发机器上进行推送。当我这样做时,由于某种奇怪的原因,exponent_server_sdk是可用的,并且工作正常。

这种行为对我来说似乎很奇怪,我找不到任何关于人们经历类似错误的文件。我想知道是否有人能给我任何指导,告诉我是什么原因导致了这个问题,或者我可以在哪里查找错误(例如部署/实例启动期间安装requirements.txt文件的过程日志(。

针对评论:

我在标准环境下跑步。

我的cloudbuild.yaml看起来是这样的:

steps:
- name: "gcr.io/cloud-builders/gcloud"
args: ["app", "deploy", "app.yaml", "dispatch.yaml", "service_1.yaml", "service_2.yaml", "service_3.yaml", "index.yaml"]
timeout: "1600s"

我遇到错误的服务的.yaml文件如下所示:

runtime: python27
api_version: 1
threadsafe: true
service: notifications
libraries:
- name: ssl
version: latest
handlers:
- url: /.*
script: notifications.app

对于(第一代(标准环境,部署过程不使用requirements.txt文件,库应该安装在应用程序中。从复制第三方库:

使用带有-t <directory>标志的pip(版本6或更高版本(将库复制到上一步中创建的文件夹中。例如:

pip install -t lib/ <library_name>

是的,如果您愿意,可以使用requirements.txt文件在应用程序中进行安装,但部署过程不使用该文件本身。

由于您不是直接从安装了库的环境中进行部署,因此还必须将安装目录添加到git repo中。

最新更新