启动Django时枚举ValueError python3 [英] Enum ValueError python3 when starting Django

查看:57
本文介绍了启动Django时枚举ValueError python3的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用uwsgi运行django应用,但出现以下错误:ValueError:名称被保留以供将来枚举使用

I am trying run my django app using uwsgi, but getting these error: ValueError: names are reserved for future Enum use

Command:  python3 manage.py runserver 0.0.0.0:8000

结果:

Traceback (most recent call last):
  File "manage.py", line 21, in <module>
    main()
  File "manage.py", line 17, in main
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python3.5/dist-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python3.5/dist-packages/django/core/management/__init__.py", line 370, in execute
    _parser = self.fetch_command('runserver').create_parser('django', 'runserver')
  File "/usr/local/lib/python3.5/dist-packages/django/core/management/__init__.py", line 244, in fetch_command
    klass = load_command_class(app_name, subcommand)
  File "/usr/local/lib/python3.5/dist-packages/django/core/management/__init__.py", line 37, in load_command_class
    module = import_module('%s.management.commands.%s' % (app_name, name))
  File "/usr/lib/python3.5/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 986, in _gcd_import
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 665, in exec_module
  File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
  File "/usr/local/lib/python3.5/dist-packages/django/core/management/commands/runserver.py", line 10, in <module>
    from django.core.servers.basehttp import (
  File "/usr/local/lib/python3.5/dist-packages/django/core/servers/basehttp.py", line 17, in <module>
    from django.core.handlers.wsgi import LimitedStream
  File "/usr/local/lib/python3.5/dist-packages/django/core/handlers/wsgi.py", line 6, in <module>
    from django.core.handlers import base
  File "/usr/local/lib/python3.5/dist-packages/django/core/handlers/base.py", line 8, in <module>
    from django.urls import get_resolver, set_urlconf
  File "/usr/local/lib/python3.5/dist-packages/django/urls/__init__.py", line 1, in <module>
    from .base import (
  File "/usr/local/lib/python3.5/dist-packages/django/urls/base.py", line 9, in <module>
    from .exceptions import NoReverseMatch, Resolver404
  File "/usr/local/lib/python3.5/dist-packages/django/urls/exceptions.py", line 1, in <module>
    from django.http import Http404
  File "/usr/local/lib/python3.5/dist-packages/django/http/__init__.py", line 5, in <module>
    from django.http.response import (
  File "/usr/local/lib/python3.5/dist-packages/django/http/response.py", line 15, in <module>
    from django.core.serializers.json import DjangoJSONEncoder
  File "/usr/local/lib/python3.5/dist-packages/django/core/serializers/__init__.py", line 23, in <module>
    from django.core.serializers.base import SerializerDoesNotExist
  File "/usr/local/lib/python3.5/dist-packages/django/core/serializers/base.py", line 7, in <module>
    from django.db import models
  File "/usr/local/lib/python3.5/dist-packages/django/db/models/__init__.py", line 10, in <module>
    from django.db.models.enums import *  # NOQA
  File "/usr/local/lib/python3.5/dist-packages/django/db/models/enums.py", line 78, in <module>
    class TextChoices(str, Choices):
  File "/usr/local/lib/python3.5/dist-packages/django/db/models/enums.py", line 81, in TextChoices
    def _generate_next_value_(name, start, count, last_values):
  File "/usr/lib/python3.5/enum.py", line 61, in __setitem__
    raise ValueError('_names_ are reserved for future Enum use')
ValueError: _names_ are reserved for future Enum use

粘贴应用程序代码没有任何意义,因为它是完全普通的应用程序,正如我认为的那样,有时python3会出错.

There is no sense in pasting app code, because it fully ordinary app, sometimes wrong with python3, as i think.

推荐答案

之所以会这样,是因为Python 3.5不支持枚举的 _missing _ 函数.Python 3.8 从此处参阅对此提供了支持.

This happens since Python 3.5 does not support _missing_ function for enums. It is supported in Python 3.8 see here from the docs.

考虑将您的python版本升级到 3.8 或任何其他支持 _missing _ 函数的版本.

Consider upgrading your python version to 3.8 or any other version that supports the _missing_ function.

如果您使用的是Ubuntu:

If you on Ubuntu:

sudo apt-get update
sudo apt-get install build-essential libpq-dev libssl-dev openssl libffi-dev zlib1g-dev
sudo apt-get install python3-pip python3.8-dev
sudo apt-get install python3.8

或以任何其他适合您的操作系统的方式升级.

Or Upgrade in any other suitable way for your OS.

这篇关于启动Django时枚举ValueError python3的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆