将 Django 应用程序部署到 Elasticbeanstalk:使用 Pip 安装软件包时出错

Posted

技术标签:

【中文标题】将 Django 应用程序部署到 Elasticbeanstalk:使用 Pip 安装软件包时出错【英文标题】:Deploying Django app to Elasticbeanstalk: Error installing packages with Pip 【发布时间】:2015-12-09 20:31:17 【问题描述】:

我一直在尝试使用 Python 3.4 将 Django 1.7 应用程序部署到 elastic-beanstalk,但未能成功。使用 Eb-Cli 以下部署会产生错误:

eb deploy

给我:

CalledProcessError: Command '/opt/python/run/venv/bin/pip install -r /opt/python/ondeck/app/requirements.txt' returned non-zero exit status 2.

检查日志,我看到以下内容:

CalledProcessError: Command '/opt/python/run/venv/bin/pip install -r /opt/python/ondeck/app/requirements.txt' returned non-zero exit status 2 (ElasticBeanstalk::ExternalInvocationError) caused by: You are using pip version 7.0.3, however version 7.1.2 is available.

看到这个错误,我使用 ssh 连接到 EC2 实例并尝试手动更新 pip;然而,这给了我一个权限错误

Permission denied: '/usr/bin/pip'

过时的 pip 导致部署失败似乎有点奇怪,但会是这样吗?如果是,关于如何更新 pip 的任何想法?

一些网络搜索让我相信使用 Python 3.x 也可能是问题,但我还没有找到任何官方文档。 EC2 根本不支持 python 3 吗?

谢谢

【问题讨论】:

Elastic Beanstalk 根据文档支持 Python 3.4:docs.aws.amazon.com/elasticbeanstalk/latest/dg/… 【参考方案1】:

如果有人好奇;该问题的解决方案是更改我的 requirements.txt 文件的编码。花了很多时间才弄清楚这一点。我的猜测是,一旦 pip 失败,pip 升级消息就会被回显到日志中,并且真正的错误消息被隐藏了太多字符而无法报告。

无论如何,将 requirements.txt 保存为 ANSI 编码,您应该一切顺利。

【讨论】:

难以置信!!谢谢!!您应该将其添加为答案!

以上是关于将 Django 应用程序部署到 Elasticbeanstalk:使用 Pip 安装软件包时出错的主要内容,如果未能解决你的问题,请参考以下文章

将 Cookiecutter-Django 应用程序部署到 Heroku 时出错

Django celery beat 在 Elastic Beanstalk 上看不到周期性任务

由于 PyWin32,无法将 Django 应用程序部署到 Heroku

ModuleNotFoundError:没有名为“应用程序”的模块 [将 Django 部署到 AWS]

将 Django 应用程序部署到 Elasticbeanstalk:使用 Pip 安装软件包时出错

使用docker将django应用程序部署到heroku时在哪里运行collectstatic?