枚举行为与Python的区别

枚举行为与Python的区别,python,heroku,enums,Python,Heroku,Enums,以下是我的Ubuntu笔记本电脑上的Python 2.7.6: (myenv)$ python Python 2.7.6 (default, Jun 22 2015, 17:58:13) [GCC 4.8.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import enum >>> class Fruit(enum.Enum):

以下是我的Ubuntu笔记本电脑上的Python 2.7.6:

(myenv)$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import enum
>>> class Fruit(enum.Enum):
...     apple=1
...     orange=2
... 
>>> Fruit.apple
<Fruit.apple: 1>
>>> type(Fruit.apple)
<enum 'Fruit'>
这是正当的问题,因为我的生产版本显示错误,而本地版本没有

$ python
Python 2.7.6 (default, Sep  9 2014, 15:04:36)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import enum
>>> enum.__version__
'0.4.4'
尝试检查
enum.\uuuuu版本\uuuuuu


尝试检查枚举。检查枚举库的版本。在您的环境中,可能有旧版本和不推荐的版本。enum类中的反正字段必须是其声明的类型,在您的示例中为int

...     apple=1
...     orange=2
和类型

fruit = Fruit

将是水果

检查enum库的版本。在您的环境中,可能有旧版本和不推荐的版本。enum类中的反正字段必须是其声明的类型,在您的示例中为int

...     apple=1
...     orange=2
和类型

fruit = Fruit

将是水果

看起来您的ubuntu版本是,而heroku版本是较早的
enum
软件包


如果我正确阅读了您的问题,并且带有
enum34
的版本工作正常,请更改您的需求文件以使用它。

看起来您的ubuntu版本是,而heroku版本是较早的
enum


如果我正确阅读了您的问题,并且
enum34
的版本工作正常,请更改您的需求文件以使用它。

是的,我很抱歉,在问题中添加了
requirements.txt
中的行。“是的,我很抱歉,”在问题中添加了
requirements.txt
中的一行。软件包是:你确定你在两台机器上都安装了相同的软件包吗?我和heroku都使用pip,所以我假设是这样。也许我误解了heroku的工作原理?请参阅我对问题的编辑。看起来您已经在本地系统和Heroku服务器上安装了。更准确地说,两者都已安装。Python不报告何时发生这种冲突吗?它如何选择要使用的同名软件包?选择模块搜索路径中的第一个。您确定在两台机器上都安装了相同的软件包吗?我和heroku都使用pip,所以我假设是这样。也许我误解了heroku的工作原理?请参阅我对问题的编辑。看起来您已经在本地系统和Heroku服务器上安装了。更准确地说,两者都已安装。Python不报告何时发生这种冲突吗?它是如何选择使用哪个同名包的?在模块搜索路径中,以先到者为准。是的,正如我在评论中提到的那样。不过,为了便于理解,这两个都安装了。Python不报告何时发生这种冲突吗?它如何选择使用相同名称的软件包?两个软件包都安装在同一位置,因此最后安装的软件包将获胜。是的,正如我在评论中提到的。不过,为了便于理解,这两个都安装了。Python不报告何时发生这种冲突吗?它如何选择要使用的同名软件包?两者都安装到同一位置,因此最后安装的软件包将获胜。