首页 > 解决方案 > RuntimeWarning:已经创建了一个名为“Individual”的类,它将被覆盖

问题描述

我有使用deap库的代码。这段代码已经在虚拟环境中运行了一段时间,没有任何问题。然后我将整个环境复制到一个新的虚拟环境并运行代码,然后我开始收到运行时错误:

/usr/local/lib/python3.6/dist-packages/deap/creator.py:141:RuntimeWarning:已经创建了一个名为“Individual”的类,它将被覆盖。考虑删除该类的先前创建或重命名它。

运行时警告)

新旧环境中使用的数据完全一样,返回的结果看起来也一样。我找不到任何可以恰当地描述为什么会发生此运行时错误的内容 - 为什么会发生?

标签: python

解决方案


您的问题是关于两个版本之间可能有什么不同。如果您想要一个有用的答案,我会礼貌地建议您需要向用户社区提供更多信息。在我的脑海中,这里有一些可能性:

  1. 不同版本的python
  2. 不同版本的deap库
  3. 全局命名空间中的不同变量

我最好的猜测是选项 3。如果您查看https://github.com/DEAP/deap/blob/master/deap/creator.py第 141 行,您将看到以下代码:

if name in globals():
    warnings.warn("A class named '{0}' has already been created and it "
                      "will be overwritten. Consider deleting previous "
                      "creation of that class or rename it.".format(name),
                      RuntimeWarning)

因此,当您运行时create,该函数会调用该globals()函数并查找已命名为您要为类命名的任何变量。在您的情况下,有一个预先存在的类称为Individual. 要确定为什么可能需要查看您的代码。


推荐阅读