Python 在Google app Engine上部署应用程序-requirements.txt中的错误

Python 在Google app Engine上部署应用程序-requirements.txt中的错误,python,google-app-engine,google-cloud-platform,Python,Google App Engine,Google Cloud Platform,我无法在Google app Engine上部署应用程序 问题似乎来自我的requirements.txt文件: 当我部署这个示例时,它运行良好 当我用我的文件替换原来的requirements.txt文件时,它不起作用* 这是我的requirements.txt: Flask==1.1.1 flask-wtf==0.14.2 unidecode numpy openfoodfacts os 当我删除最后两个包时,它就工作了 有什么问题 *gcloud部署应用程序返回: File uplo

我无法在Google app Engine上部署应用程序

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

  • 当我部署这个示例时,它运行良好
  • 当我用我的文件替换原来的
    requirements.txt
    文件时,它不起作用*
这是我的
requirements.txt

Flask==1.1.1
flask-wtf==0.14.2
unidecode
numpy
openfoodfacts
os
当我删除最后两个包时,它就工作了

有什么问题

*
gcloud部署应用程序
返回:

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.

您是否尝试像这样在本地使用此requirements.txt文件

pip install -r requirements.txt

您的requirements.txt文件的最后两行似乎与可随pip安装的Python包不对应。

您是否尝试在本地像这样使用此requirements.txt文件?:

pip install -r requirements.txt

看起来requirements.txt文件的最后两行与可随pip一起安装的Python软件包不对应。

事实上,
requirements.txt
文件中同时存在
os
openfoodfacts
(只需要包含pip可安装的软件包,请参阅)正在导致pip安装错误:

[venv] openfoodfacts> pip install os
Collecting os
  Could not find a version that satisfies the requirement os (from versions: )
No matching distribution found for os

[venv] openfoodfacts> pip install openfoodfacts
Collecting openfoodfacts
  Could not find a version that satisfies the requirement openfoodfacts (from versions: )
No matching distribution found for openfoodfacts
您不需要将
os
添加到您的需求中,它是标准python安装的一部分,您只需导入它即可

而且
openfoodfacts
似乎不是常规的
Pypi
包。如果它来自不需要SSH密钥的pip存储库,您可以在
requirements.txt
文件中指定它,请参阅。否则,您需要将其安装到应用程序中,以便与应用程序代码一起上载,请查看部分


您可以/应该始终尝试检查
requirements.txt
文件的完整性。请注意需要SSH密钥的pip回购,因为默认情况下,您可以通过帐户配置访问这些密钥。

事实上,
requirements.txt
文件中同时存在
os
openfoodfacts
(需要仅包含pip可安装的软件包,请参阅)会导致pip安装错误:

[venv] openfoodfacts> pip install os
Collecting os
  Could not find a version that satisfies the requirement os (from versions: )
No matching distribution found for os

[venv] openfoodfacts> pip install openfoodfacts
Collecting openfoodfacts
  Could not find a version that satisfies the requirement openfoodfacts (from versions: )
No matching distribution found for openfoodfacts
您不需要将
os
添加到您的需求中,它是标准python安装的一部分,您只需导入它即可

而且
openfoodfacts
似乎不是常规的
Pypi
包。如果它来自不需要SSH密钥的pip存储库,您可以在
requirements.txt
文件中指定它,请参阅。否则,您需要将其安装到应用程序中,以便与应用程序代码一起上载,请查看部分


您可以/应该始终尝试检查
requirements.txt
文件的完整性。请注意需要SSH密钥的pip REPO,因为默认情况下,您可以通过帐户配置访问这些密钥。

根据您收到的错误,Cloud Build未能安装requirements.txt文件中指定的最后两个依赖项。如果转到并检查失败的部署,您将注意到部署失败,并显示与此类似的错误消息:

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))
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
无需在requirements.txt中包含,因为它是Python 3.7标准库的一部分。例如,请注意,基于的应用程序将导入,而这并没有在上指定

实际上尚未在PyPI上发布(即is 404),因此您需要参考的相关部分并手动添加,方式与此类似:

  • 在应用程序的项目目录上创建一个
    lib
    目录(例如,使用
    mkdir lib
    创建my)
  • 通过发出以下命令将所需的依赖项复制到新创建的
    lib
    目录:
    pip3 install git+git://github.com/openfoodfacts/openfoodfacts-python.git -t lib
  • 转到
    lib
    目录,验证是否已正确安装所有依赖项
  • 修改
    requirements.txt
    文件以使用Open Food Facts包所需的依赖项。应该是这样的:
  • 以与导入库类似的方式导入应用程序中的模块。openfoodfacts作为openff
  • 使用
    gcloud app deploy
    命令部署应用程序
  • 最后,您应该有一个文件结构与此类似的项目目录:

    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))
    
    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
    模块:

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

    根据您收到的错误,Cloud Build未能安装requirements.txt文件中指定的最后两个依赖项。如果转到并检查失败的部署,您将注意到部署失败,并显示与此类似的错误消息:

    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))
    
    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
    
    无需在requirements.txt中包含,因为它是Python 3.7标准库的一部分。例如,请注意,基于的应用程序将导入,而这并没有在上指定

    实际上尚未在PyPI上发布(即is 404),因此您需要参考的相关部分并手动添加,方式与此类似:

  • 在应用程序的项目目录上创建一个
    lib
    目录(例如,使用
    mkdir lib
    创建my)
  • 通过发出以下命令将所需的依赖项复制到新创建的
    lib
    目录:
    pip3 install git+git://github.com/openfoodfacts/openfoodfacts-python.git -t lib
  • 转到
    lib
    目录,验证是否已正确安装所有依赖项
  • 修改
    requirements.txt
    文件以使用Open Food Facts包所需的依赖项。应该是这样的:
  • 以类似于导入lib.openfoodfactas op的方式导入应用程序中的模块