在Google App Engine上部署应用-Requirements.txt错误 [英] Deploying an app on Google App Engine - Error from requirements.txt

查看:77
本文介绍了在Google App Engine上部署应用-Requirements.txt错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我无法在Google App Engine上部署应用.

I can't deploy an app on Google App Engine.

问题似乎来自我的 requirements.txt 文件:

The problem seems to come from my requirements.txt file:

  • 当我部署示例时
  • When I deploy the example building-an-app-1, it works well.
  • When I replace the original requirements.txt file with mine, it doesn't work*.

这是我的 requirements.txt :

Flask==1.1.1
flask-wtf==0.14.2
unidecode
numpy
openfoodfacts
os

当我删除最后两个软件包时,它可以工作.

When I remove the last 2 packages, it works.

出什么问题了?

* gcloud deploy app 返回:

File upload done.
Updating service [default]...failed.                                           
ERROR: (gcloud.app.deploy) Error Response: [9] Cloud build 813ab290-60a1-427c-830f-3a7e2d35f39b status: FAILURE.
Build error details: {"error":{"errorType":"BuildError","canonicalCode":"INVALID_ARGUMENT","errorId":"288DA415","errorMessage":"01 Feb 2020 17:23:53 INFO     Arguments: ['--parser_script=/usr/local/bin/ftl.par', '--src=', '--entrypoint=', '--name=eu.gcr.io/skilful-alpha-259713/app-engine-tmp/app/ttl-2h:34df8d6c-74e5-4583-bd94-165295531608', '--directory=/workspace', '--destination=/srv', '--cache-repository=eu.gcr.io/skilful-alpha-259713/app-engine-tmp/build-cache/ttl-7d', '--cache', '--builder-output-path=\"\"', '--additional-directory=/.googleconfig', '--python-cmd=/opt/python3.7/bin/python3.7', '--pip-cmd=/env/bin/python3.7 -m pip', '--venv-cmd=/opt/python3.7/bin/python3.7 -m venv /env', '-v=DEBUG', '--base=eu.gcr.io/gae-runtimes/python37:python37_20191019_3_7_4_RC00']
01 Feb 2020 17:23:53 INFO     Unparsed arguments: ['--name=eu.gcr.io/skilful-alpha-259713/app-engine-tmp/app/ttl-2h:34df8d6c-74e5-4583-bd94-165295531608', '--directory=/workspace', '--destination=/srv', '--cache-repository=eu.gcr.io/skilful-alpha-259713/app-engine-tmp/build-cache/ttl-7d', '--cache', '--builder-output-path=\"\"', '--additional-directory=/.googleconfig', '--python-cmd=/opt/python3.7/bin/python3.7', '--pip-cmd=/env/bin/python3.7 -m pip', '--venv-cmd=/opt/python3.7/bin/python3.7 -m venv /env', '-v=DEBUG', '--base=eu.gcr.io/gae-runtimes/python37:python37_20191019_3_7_4_RC00']
01 Feb 2020 17:23:53 INFO     Executing ['/usr/local/bin/ftl.par', '--name=eu.gcr.io/skilful-alpha-259713/app-engine-tmp/app/ttl-2h:34df8d6c-74e5-4583-bd94-165295531608', '--directory=/workspace', '--destination=/srv', '--cache-repository=eu.gcr.io/skilful-alpha-259713/app-engine-tmp/build-cache/ttl-7d', '--cache', '--builder-output-path=\"\"', '--additional-directory=/.googleconfig', '--python-cmd=/opt/python3.7/bin/python3.7', '--pip-cmd=/env/bin/python3.7 -m pip', '--venv-cmd=/opt/python3.7/bin/python3.7 -m venv /env', '-v=DEBUG', '--base=eu.gcr.io/gae-runtimes/python37:python37_20191019_3_7_4_RC00']
INFO     FTL version python-v0.17.0
INFO     Beginning FTL build for python
INFO     FTL arg passed: virtualenv_dir /env
INFO     FTL arg passed: ttl 168
INFO     FTL arg passed: python_cmd /opt/python3.7/bin/python3.7
INFO     FTL arg passed: cache True
INFO     FTL arg passed: virtualenv_cmd virtualenv
INFO     FTL arg passed: entrypoint None
INFO     FTL arg passed: exposed_ports None
INFO     FTL arg passed: pip_cmd /env/bin/python3.7 -m pip
INFO     FTL arg passed: tar_base_image_path None
INFO     FTL arg passed: export_cache_stats False
INFO     FTL arg passed: builder_output_path \"\"
INFO     FTL arg passed: destination_path /srv
INFO     FTL arg passed: sh_c_prefix False
INFO     FTL arg passed: base eu.gcr.io/gae-runtimes/python37:python37_20191019_3_7_4_RC00
INFO     FTL arg passed: cache_key_version v0.17.0
INFO     FTL arg passed: cache_salt 
INFO     FTL arg passed: cache_repository eu.gcr.io/skilful-alpha-259713/app-engine-tmp/build-cache/ttl-7d
INFO     FTL arg passed: venv_cmd /opt/python3.7/bin/python3.7 -m venv /env
INFO     FTL arg passed: name eu.gcr.io/skilful-alpha-259713/app-engine-tmp/app/ttl-2h:34df8d6c-74e5-4583-bd94-165295531608
INFO     FTL arg passed: global_cache False
INFO     FTL arg passed: upload True
INFO     FTL arg passed: fail_on_error True
INFO     FTL arg passed: output_path None
INFO     FTL arg passed: directory /workspace
INFO     FTL arg passed: additional_directory /.googleconfig
INFO     FTL arg passed: verbosity DEBUG
INFO     starting: full build
INFO     starting: builder initialization
INFO     Loading Docker credentials for repository 'eu.gcr.io/gae-runtimes/python37:python37_20191019_3_7_4_RC00'
INFO     Loading Docker credentials for repository 'eu.gcr.io/skilful-alpha-259713/app-engine-tmp/app/ttl-2h:34df8d6c-74e5-4583-bd94-165295531608'
INFO     builder initialization took 0 seconds
INFO     starting: build process for FTL image
INFO     starting: checking_cached_interpreter_layer
INFO     starting: check python version
INFO     `python version` full cmd:
/opt/python3.7/bin/python3.7 --version
I.

推荐答案

根据您收到的错误,Cloud Build无法安装您在requirements.txt文件中指定的最后两个依赖项.如果您转到"Cloud Build History"页面,然后检查失败的部署,您会注意到部署失败,并显示与此类似的错误消息:

According to the error you are receiving Cloud Build is failing to install the last two dependencies that you are specifiying on your requirements.txt file. If you go to the Cloud Build History page and check your failed deployments you'll notice that the deployments are failing with a similar error message to this one:

Step #1 - "builder": INFO     `pip_download_wheels` had stderr output:
Step #1 - "builder":   Could not find a version that satisfies the requirement openfoodfacts==0.1.0 (from -r requirements.txt (line 10)) (from versions: )
Step #1 - "builder": No matching distribution found for openfoodfacts==0.1.0 (from -r requirements.txt (line 10))

不需要包含 os模块,因为它是Python 3.7标准库的一部分.例如,请注意 main.py ,您是基于应用程序导入

There is no need to include the os module on the requirements.txt since it is part of Python's 3.7 Standard Library. Notice for example that the main.py you are basing your application from makes an import of the datetime module and this is not specified on the requirements.txt file.

Open Food Facts包尚未在PyPI上实际发布(即, https://pypi.org/project/openfoodfacts/为404),因此您需要参考 App Engine的文档的相关部分并添加手动操作,其方式与此类似:

The Open Food Facts package has not actually been released on PyPI (i.e., https://pypi.org/project/openfoodfacts/ is 404) so you'll need to refer to the relevant section of the App Engine's documentation and add it manually, in a similar fashion to this:

  1. 在应用程序的项目目录上创建一个 lib 目录(例如,我使用 mkdir lib ).
  2. 通过发出以下命令,将所需的依赖项复制到新创建的 lib 目录中: pip3 install git + git://github.com/openfoodfacts/openfoodfacts-python.git-t lib .
  3. 转到 lib 目录,并验证是否已正确安装所有依赖项.
  4. 修改您的 requirements.txt 文件,以使用Open Food Facts软件包所需的依赖项.它应该看起来像这样:
  1. Create a lib directory on your application's Project Directory (e.g. my using mkdir lib).
  2. Copy the dependencies you need to the new created lib directory by issuing the following command: pip3 install git+git://github.com/openfoodfacts/openfoodfacts-python.git -t lib.
  3. Go to the lib directory and verify that all dependencies have been installed correctly.
  4. Modify your requirements.txt file to use the dependencies required by the Open Food Facts package. It should look like this:

Flask==1.1.1
flask-wtf==0.14.2
unidecode==1.1.1
numpy==1.18.1
certifi==2019.11.28
chardet==3.0.4
idna==2.8
requests==2.22.0
urllib3==1.25.8

  1. 以类似于 import lib.openfoodfacts as openff 的方式将模块导入应用程序中.
  2. 使用 gcloud app deploy 命令部署您的应用程序.
  1. Import the module in your app in a similar fashion to import lib.openfoodfacts as openff.
  2. Use the gcloud app deploy command to deploy your application.

最后,您应该有一个项目目录,其文件结构与此目录相似:

At the end you should have a project directory with a similar file structure than this one:

building-an-app-1/
    app.yaml
    lib/
        ...
        openfoodfacts/
            autosuggest.py
            facets.py
            __init__.py
            openbeautyfacts.py
            openpetfoodfacts.py
            products.py
            __pycache__/
            utils.py
        ...
    main.py
    requirements.txt
    static/
        script.js
        style.css
    templates/
        index.html

使用以下命令可以在 main.py 文件上导入 os openfoodfacts 模块:

where you can import the os and openfoodfacts modules on the main.py file by using the following:

...
import datetime
import os
import lib.openfoodfacts as openff
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
....

这篇关于在Google App Engine上部署应用-Requirements.txt错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆