【问题标题】:module 'enum' has no attribute 'IntFlag' while deploying django application to AWS Beanstalk将 django 应用程序部署到 AWS Beanstalk 时,模块“枚举”没有属性“IntFlag”
【发布时间】:2018-05-08 14:18:16
【问题描述】:

我正在使用弹性 beanstalk 的 CLI 部署我的 django 应用程序,它在日志中显示以下错误。

我创建了一个 python 2.7 环境,并通过在 EC2 实例中键入“python -V”进行了验证,它显示了正确的 python 版本 (2.7),但不知何故,在错误日志中似乎正在使用 python3.6。请看下面的错误

Collecting enum==0.4.6 (from -r /opt/python/ondeck/app/requirements.txt (line 43))
    Downloading enum-0.4.6.tar.gz
      Complete output from command python setup.py egg_info:
      Traceback (most recent call last):
        File "<string>", line 1, in <module>
        File "/opt/python/run/venv/local/lib/python3.6/site-packages/setuptools/__init__.py", line 5, in <module>
          import distutils.core
        File "/opt/python/run/venv/lib64/python3.6/distutils/__init__.py", line 4, in <module>
          import imp
        File "/opt/python/run/venv/lib64/python3.6/imp.py", line 27, in <module>
          import tokenize
        File "/opt/python/run/venv/lib64/python3.6/tokenize.py", line 33, in <module>
          import re
        File "/opt/python/run/venv/lib64/python3.6/re.py", line 142, in <module>
          class RegexFlag(enum.IntFlag):
      AttributeError: module 'enum' has no attribute 'IntFlag'

当我在本地构建时,它可以完美运行,但只有当我使用“eb deploy”命令将我的代码上传到弹性 beanstalk 时才会发生这种情况。

【问题讨论】:

  • 它声明python3.6,所以也许pip,或者setuptools切换到3.6?
  • 您知道如何将它们切换为使用 2.7 版本吗?
  • 不是真的...有两点应该有 2.7 - virtualenveb create。根据您的帖子-一切正常。也许你可以去/var/log 看看周围?喜欢grep -r python .那里
  • 您能解决问题吗?我遇到了同样的错误。

标签: python django amazon-elastic-beanstalk


【解决方案1】:

枚举包在较新版本的 Python 和 Django 中存在已知问题。 您的要求中有枚举。您的本地服务器运行正常吗?检查是否通过?

python ./manage.py check

我建议摆脱枚举。如果它已预安装在您的实例上,请使用以下命令删除软件包:

sudo rm -r /opt/python/run/venv/lib/python3.6/site-packages/enum

相关,接近重复 Q:enum34 issue in Elastic Beanstalk

【讨论】:

  • 这对我有用,因为我什至无法使用 pip 来卸载模块,所以会出错。
猜你喜欢
  • 2019-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-18
  • 1970-01-01
  • 2013-09-04
相关资源
最近更新 更多