【问题标题】:Flask app on Cloud Foundry - Command "python setup.py egg_info" failed with error code 1Cloud Foundry 上的 Flask 应用程序 - 命令“python setup.py egg_info”失败,错误代码为 1
【发布时间】:2018-06-12 21:05:06
【问题描述】:

我正在尝试通过 Flask 将 Python (3.6.5) 应用程序推送到 Cloud Foundry(参见版本 6.36.1+e3799ad7e.2018-04-04)。应用程序接受 POST 请求(文本文件),进行一些文本转换,保存新文件,并返回确认消息。它在本地工作(通过 Postman 测试)。但是,当尝试将其推送到 CF 时,会出现以下错误 -

Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-ygzuah5g/logging/

您能告诉我如何解决这个问题吗?提前致谢。整个文件加起来约为 350 MB。我正在使用 manifest.yml

---
applications:
- name: textsum
  memory: 512M
  command: python server.py
  buildpack: https://github.com/cloudfoundry/buildpack-python.git

PS - 不确定这是否有帮助,我的一个文件中有 import queue。如果我将其更改为import Queue(兼容Py 2x)并使用Py 2.7.15 运行时,cf push 成功,但会引发运行时错误

ERROR in app: Exception on / [POST]
File "/home/vcap/deps/0/python/lib/python2.7/subprocess.py", line 1047, in _execute_child
ERR   raise child_exception
ERR OSError: [Errno 2] No such file or directory
ERR 10.0.65.11 - - [12/Jun/2018 20:56:16] "POST / HTTP/1.1" 500 -

【问题讨论】:

    标签: python flask cloud-foundry


    【解决方案1】:

    首先。不要在你的manifest.yml 中这样做:

    构建包:https://github.com/cloudfoundry/buildpack-python.git

    这告诉 Cloud Foundry 使用 buildpack 的 master 分支,该分支可能会频繁更改,并且无法保证它的适用性(即它甚至可能被破坏)。

    请确保您使用的是发行版。版本经过测试,代码不会从您那里更改。

    您可以使用平台提供的 Python buildpack 执行此操作,只需删除此行或将 python_buildpack 作为名称,或者您可以指向 buildpack: https://github.com/cloudfoundry/buildpack-python.git#v1.6.17,其中 v1.6.17 是此处的版本。

    https://github.com/cloudfoundry/python-buildpack/releases

    其次,您似乎需要告诉 Cloud Foundry 和 buildpack 您想要哪个版本的 Python。如果你需要 Python 3,那么你应该告诉它。有关执行此操作的说明,请参见此处。

    https://stackoverflow.com/a/50837696/1585136

    第三,这个错误:

    ERR OSError: [Errno 2] 没有这样的文件或目录

    似乎您正在尝试写入一个不存在的位置。你想在哪里写你的文件?本地机器上的路径与在 Cloud Foundry 上运行的路径不同。通常在 Cloud Foundry 上,您会将临时文件写入/home/vcap/tmp/app/tmp/app 是指向/home/vcap 的符号链接)或$HOME/tmp。它们都指向同一个地方。

    我在这里特别提到 临时 文件,因为您不想将永久文件写入 Cloud Foundry 上的本地文件系统。本地文件系统是短暂的,您的数据不会持续很长时间。详情请看这里。

    https://docs.cloudfoundry.org/devguide/deploy-apps/prepare-to-deploy.html#filesystem

    希望有帮助!

    【讨论】:

    • 感谢您的回复。我已将清单更改为使用发布 buildpack (github.com/cloudfoundry/buildpack-python.git#v1.6.17),并且正在使用 runtime.txt (python-3.5.x)。另外,我只使用临时文件写入,就像这样 - tmp_dir = '$HOME/tmp/textfiles' 并且我能够使用 Python 3.x 在本地(通过 Postman)运行它。但是,在 CF 中,错误 Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-ygzuah5g/logging/ 在使用任何 python-3.x 运行时时仍然存在。有关如何解决此问题的任何进一步想法都会有所帮助!
    • 不清楚您在哪里看到了失败消息。你能提供更大的日志文件sn-p吗?也许从cf push 到失败的整个输出?
    • 已解决 - 此问题是由于(冗余)将名为 logging 的第三方库导入到 Python 3 环境中,该环境隐藏了标准库版本。默认情况下,该库位于 Python 3 环境中。无需通过需求导入。感谢@daniel-mikusa 的投入。
    猜你喜欢
    • 2016-12-18
    • 2017-02-20
    • 2014-02-26
    • 2018-02-20
    • 1970-01-01
    • 2021-01-13
    相关资源
    最近更新 更多