上传 Flask 应用程序时出现 AWS Elastic Beanstalk 错误

Posted

技术标签:

【中文标题】上传 Flask 应用程序时出现 AWS Elastic Beanstalk 错误【英文标题】:AWS Elastic Beanstalk error when uploading Flask application 【发布时间】:2015-09-18 12:45:16 【问题描述】:

我最近尝试将 Flask 应用程序上传到 AWS,但收到一条错误消息:

您的 requirements.txt 无效。快照您的日志以获取详细信息。

我将一个测试应用程序(我在网上找到)上传到可以运行的服务器,但是我自己的应用程序没有。

这是我的 requirements.txt 文件的样子:

awsebcli==3.4.5
blinker==1.3
cement==2.4.0
docker-py==1.1.0
dockerpty==0.3.4
docopt==0.6.2
Flask==0.10.1
Flask-Bcrypt==0.6.2
Flask-Mail==0.9.1
itsdangerous==0.24
Jinja2==2.7.3
jmespath==0.7.1
MarkupSafe==0.23
mercurial==3.2.4
pathspec==0.3.3
pbr==1.1.1
plyer==1.2.1
pycrypto==2.6.1
python-bcrypt==0.3.1
python-dateutil==2.4.2
PyYAML==3.11
requests==2.6.2
schedule==0.3.1
six==1.9.0
stevedore==1.5.0
texttable==0.8.3
virtualenv==12.0.4
virtualenv-clone==0.2.5
virtualenvwrapper==4.6.0
websocket-client==0.32.0
Werkzeug==0.10.1
wxPython-common==3.0.2.0

我不知道它有什么问题。我没有手动更改它或添加任何奇怪的东西。我只使用pip freeze > requirements.txt 构建它。

我该如何解决这个问题?谢谢。

编辑

这些是我的系统包:

awsebcli (3.4.5)
blinker (1.3)
cement (2.4.0)
docker-py (1.1.0)
dockerpty (0.3.4)
docopt (0.6.2)
Flask (0.10.1)
Flask-Bcrypt (0.6.2)
Flask-Mail (0.9.1)
itsdangerous (0.24)
Jinja2 (2.7.3)
jmespath (0.7.1)
MarkupSafe (0.23)
mercurial (3.2.4)
pathspec (0.3.3)
pbr (1.1.1)
pip (6.0.3)
plyer (1.2.1)
pycrypto (2.6.1)
python-bcrypt (0.3.1)
python-dateutil (2.4.2)
PyYAML (3.11)
requests (2.6.2)
schedule (0.3.1)
setuptools (7.0)
six (1.9.0)
stevedore (1.5.0)
texttable (0.8.3)
virtualenv (12.0.4)
virtualenv-clone (0.2.5)
virtualenvwrapper (4.6.0)
websocket-client (0.32.0)
Werkzeug (0.10.1)

【问题讨论】:

这里有很多你的应用可能不需要的包。您可能应该清理此文件,以便它只包含您知道您需要的内容。仅列出一些(可能的)违规者:awsebcli、botocore、setuptools、cement、mercurial、pip、pathspec... 【参考方案1】:

只需复制粘贴并安装代码。

wxPython-common 似乎在 pip 中没有该版本。

除此之外,似乎没有任何问题。只需确保 requirements.txt 文件的开头或结尾没有任何其他字符

【讨论】:

我不记得在我的 Virtualenv 中安装了 wxPython。我刚刚尝试卸载它,但我收到一个 OSError 告诉我我无权执行此操作。 你的系统上安装了吗?它可能是,你可能也在你的 virtualenv 中使用站点包 它安装在我的系统上。我的印象是 virtualenv 不会包含这些包?由于 OSError,我将如何卸载它? 你可以使用sudo来卸载它。最好创建一个不使用系统包的适当 virtualenv。然后安装所需的要求,然后使用它。 谢谢我刚刚卸载了 wxpython。我创建了一个新的 virtualenv,但仍然安装了系统包。我也尝试过使用--no-site-packages,但仍然安装了它们。【参考方案2】:

这里提到了很多系统包。如果您只想列出项目所需的文件,请使用命令创建虚拟环境

virtualenv --no-site-packages virt

然后使用您的虚拟环境并使用 pip 或 pip3 install 为您的 python 项目手动安装所需的库。

source virt/bin/activate // Use this to enter your virtual env

之后只需使用代码

pip3 freeze --local > requirements.txt 

保存上传要求。

【讨论】:

以上是关于上传 Flask 应用程序时出现 AWS Elastic Beanstalk 错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 elasticbeanstalk 部署 Flask 时出现 AWS mod_wsgi 错误

上传文件时出现 AWS/Heroku 错误

从 Nuxt 上传到 AWS S3 存储桶时出现 500 内部服务器错误

通过 httpd 上的 Flask-PyMongo 连接到 MongoHQ URI 时出现 ConnectionFailure

仅从浏览器使用预签名 URL 上传时出现 AWS S3 CORS 错误

AWS - 错误 504 - 网关超时 - Flask 应用程序