AWS Elastic Beanstalk 上的 Django - 没有名为 MySQLdb 的模块错误

Posted

技术标签:

【中文标题】AWS Elastic Beanstalk 上的 Django - 没有名为 MySQLdb 的模块错误【英文标题】:Django on AWS Elastic Beanstalk - No module named MySQLdb Error 【发布时间】:2019-05-22 20:49:57 【问题描述】:

我一直在使用 AWS Elastic Beanstalk 运行这个 Web 应用程序,在 64 位 Amazon Linux/2.0.1 上运行的 Amazon Linux 版本 Python 2.7 上没有任何问题。

当我尝试“升级”到最新的 Amazon Linux 版本时:Python 2.7 版本、Linux/2.7.72.0.1 之后的任何版本,我收到此错误:

ImproperlyConfigured: Error loading mysqldb module: No module named MySQLdb.

Did you install mysqlclient or MySQL-python?

我确实已经安装并包含在我的requirements.txt 文件中

MySQL-python==1.2.5
mysqlclient==1.3.14

我尝试重新安装它们并从需求中删除它们,但仍然没有运气。

在我的 .ebextensions 中,我确实有这些:

packages:
    yum:
        python27-devel: []
        libmemcached-devel: []
        gcc: []
        libxml2-devel: []
        libxslt-devel: []

之后我添加了gcclibx,所以我知道它们不会导致错误。 (我没有尝试删除python27-devellibmemcached-devel

有什么想法吗?

除了2.0.1 之外发生了什么变化,因为一切都在运行版本2.0.1 并且它在任何更新的EB 版本上都不能正常工作?

【问题讨论】:

你能分享你在.ebextensions中的任何配置吗? @MicahCarrick 是的,我可以!我刚刚更新了我的问题并在上面添加了那些.ebextrensions。感谢收看! 【参考方案1】:

通过查看过去的一些工作,我认为您可能需要将mysql-devel 添加到您的.ebextensions 文件中的yum 部分

【讨论】:

天哪!我刚刚在我的“开发”服务器上尝试过,没有出错。我将在周一早上运行生产服务器更新,并会回复您以奖励赏金。太感谢了!我快疯了,几乎尝试了其他所有方法。 一切都很顺利,我现在运行的是最新的 AWS Linux 版本。再次感谢您的帮助!非常感谢!【参考方案2】:

这也发生在我身上,据我所知,您可能需要重建虚拟环境。在弹性豆茎控制台中。或者使用 eb 命令行界面。

【讨论】:

感谢您抽出宝贵时间回答。不幸的是,我已经尝试过了,但没有运气。还有其他建议吗? 只是那个包,还是发生在任何其他包上? 就这么一个包。至少从日志来看,这似乎是唯一的问题。 当你运行 pip freeze 会发生什么? 本地?我的virt_env 中安装了一长串软件包。话虽如此,我并没有将所有这些都包含在我的 requiremetns.txt 中,因为我的应用程序中不再需要一些旧模块。【参考方案3】:

改为安装

$ apt-get install python-mysqldb 

【讨论】:

Elasticbeanstalk 运行不使用 apt 而是使用 yum 的 Amazon Linus。

以上是关于AWS Elastic Beanstalk 上的 Django - 没有名为 MySQLdb 的模块错误的主要内容,如果未能解决你的问题,请参考以下文章

如何避免 AWS Elastic Beanstalk 上的 TooManyApplicationVersion 异常?

反应:AWS Elastic Beanstalk 上的 502 错误网关

AWS Elastic Beanstalk 上的 Wordpress

AWS Elastic Beanstalk 上的 Spring Boot 并记录到文件

AWS Elastic Beanstalk 上的 Django manage.py

如何获取命令以从 Elastic Beanstalk 上的 Dockerfile.aws.json 运行?