Cloud Foundry 上的 Flask 应用程序 - 命令 "python setup.py egg_info" 失败,错误代码为 1

Flask app on Cloud Foundry - Command "python setup.py egg_info" failed with error code 1

我正在尝试通过 Flask 将 Python (3.6.5) 应用程序推送到 Cloud Foundry(参见版本 6.36.1+e3799ad7e.2018-04-04)。应用程序接收 POST 请求(文本文件),进行一些文本转换,保存新文件,然后 returns 确认消息。它在本地工作(通过 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 推送成功,但会抛出运行时错误

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 -

第一。不要在 manifest.yml:

中这样做

buildpack: 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

Second,看来你需要告诉 Cloud Foundry 和 buildpack 你想要哪个版本的 Python。如果你需要 Python 3,那么你应该告诉它。有关执行此操作的说明,请参阅此处。

第三次,这个错误:

ERR OSError: [Errno 2] No such file or directory

您似乎正试图写入一个不存在的位置。你想在哪里写你的文件?本地计算机上的路径与 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

希望对您有所帮助!