簡體   English   中英

RuntimeWarning: 一個名為“Individual”的類已經被創建,它將被覆蓋

[英]RuntimeWarning: A class named 'Individual' has already been created and it will be overwritten

我有使用deap庫的代碼。 這段代碼已經在虛擬環境中運行了一段時間,沒有任何問題。 然后我將整個環境復制到一個新的虛擬 envronemnt 並運行代碼,我開始收到運行時錯誤:

/usr/local/lib/python3.6/dist-packages/deap/creator.py:141: RuntimeWarning: 一個名為“Individual”的類已經被創建,它將被覆蓋。 考慮刪除該類的先前創建或重命名它。

運行時警告)

新舊環境中使用的數據完全相同,返回的結果看起來也一樣。 我找不到任何可以恰當地描述為什么會發生此運行時錯誤的內容 - 為什么會發生?

您的問題是關於兩個版本之間可能有什么不同。 如果您想要有用的答案,我會禮貌地建議您需要向用戶社區提供更多信息。 在我的腦海里,這里有一些可能性:

  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的預先存在的類。 要確定原因可能需要查看您的代碼。

當您運行 DEAP 庫時,它會創建一個 Individual 類。 如果你運行它兩次,那么它會覆蓋之前定義的 Individual 類。 在您的新環境中,一路上的某個地方,您運行了兩次 DEAP。

關於打印輸出的不同行為表明您的環境實際上並不相同。 可能 DEAP 的版本不同。 您可以檢查deap.__version__變量並進行比較。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM