在Google App Engine上部署应用-Requirements.txt错误 [英] Deploying an app on Google App Engine - Error from 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 ,您是基于应用程序导入 requirements.txt文件.
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上实际发布(即,
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:
- 在应用程序的项目目录上创建一个
lib
目录(例如,我使用mkdir lib
). - 通过发出以下命令,将所需的依赖项复制到新创建的
lib
目录中:pip3 install git + git://github.com/openfoodfacts/openfoodfacts-python.git-t lib
. - 转到
lib
目录,并验证是否已正确安装所有依赖项. - 修改您的
requirements.txt
文件,以使用Open Food Facts软件包所需的依赖项.它应该看起来像这样:
- Create a
lib
directory on your application's Project Directory (e.g. my usingmkdir lib
). - 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
. - Go to the
lib
directory and verify that all dependencies have been installed correctly. - 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
- 以类似于
import lib.openfoodfacts as openff
的方式将模块导入应用程序中. - 使用
gcloud app deploy
命令部署您的应用程序.
- Import the module in your app in a similar fashion to
import lib.openfoodfacts as openff
. - 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屋!