如何与enum和enum34一起生活?

now*_*wox 7 python enums

我注意到Python上的枚举有不同的行为.

我第一次惊讶地注意到这个输出是int:

>>>import enum
>>>class Color(enum.Enum):
       red = 1

>>>Color.red
1
Run Code Online (Sandbox Code Playgroud)

然后我意识到我enum安装了而不是enum34:

$ sudo apt-get install python-enum34
Run Code Online (Sandbox Code Playgroud)

现在,结果是不同的:

>>>Color.red
<Color.red: 1>
Run Code Online (Sandbox Code Playgroud)

我目前的应用程序是接受enum类型,我得到枚举的值value.value.当然,如果安装了错误的枚举,这将引发异常.

我该如何处理这个问题?

Eth*_*man 5

据猜测,您似乎拥有enum在 3.4 Enum 出现之前就存在的软件包。enum34如此命名是因为之前的包已经存在。

两者enumenum34安装到同一位置,因此使它们共存并不容易 - 而且它会使您的代码难以分发,因为其中一个枚举将位于非标准位置。

一种可能性是使用virtual envs-- 然后您可以在venv.