मेरे पास कोड है जो deap लाइब्रेरी का उपयोग करता है। यह कोड कुछ समय के लिए बिना किसी समस्या के वर्चुअल वातावरण में चल रहा है। मैं फिर पूरे वातावरण को एक नए वर्चुअल एनवॉर्मेंट में कॉपी करता हूं और कोड चलाता हूं और मुझे रन टाइम त्रुटि मिलनी शुरू हो जाती है:

/usr/local/lib/python3.6/dist-packages/deap/creator.py:141: RuntimeWarning: 'व्यक्तिगत' नामक एक वर्ग पहले ही बनाया जा चुका है और इसे अधिलेखित कर दिया जाएगा। उस वर्ग की पिछली रचना को हटाने या उसका नाम बदलने पर विचार करें।

रनटाइम चेतावनी)

पुराने और नए परिवेश में उपयोग किया गया डेटा बिल्कुल वैसा ही होता है और लौटाए गए परिणाम समान दिखते हैं और साथ ही समान दिखते हैं। मुझे ऐसा कुछ भी नहीं मिला जो उपयुक्त रूप से वर्णन करे कि यह रन टाइम त्रुटि क्यों होती है - ऐसा क्यों हो रहा है?

4
Stacey 15 फरवरी 2020, 18:55
2
कृपया नीचे दिए गए लिंक को देखें और देखें कि क्या यह आपकी समस्या का समाधान करता है।github.com/DEAP/deap/issues/ 108
 – 
Anupam Chaplot
15 फरवरी 2020, 19:31
1
वास्तव में नहीं, मेरी समस्या यह है कि कोड मेरे पुराने वातावरण में ठीक काम करता है लेकिन नए में नहीं, ऐसा क्यों होगा?
 – 
Stacey
15 फरवरी 2020, 21:58
क्या आप चीजों को और स्पष्ट करने के लिए कुछ और विवरण और/या कोड प्रदान कर सकते हैं?
 – 
abdullah.cu
22 फरवरी 2020, 12:17
2
संदेश के बारे में क्या: "'व्यक्तिगत' नामक एक वर्ग पहले ही बनाया जा चुका है और इसे अधिलेखित कर दिया जाएगा। उस वर्ग की पिछली रचना को हटाने या उसका नाम बदलने पर विचार करें।"। क्या आपने पहले से ही सुझाव की कोशिश की है? यह मेरे लिए लगता है (लेकिन मैं गहराई से नहीं जानता) कि एक कोड जनरेटर है जो आपके लिए अजगर कक्षाएं बनाता है। यह पहले से संकलित कक्षाओं या जो कुछ भी संघर्ष कर सकता है। यह कहना वास्तव में कठिन है कि क्या आप अधिक जानकारी प्रदान नहीं करते हैं जैसा कि अन्य टिप्पणियों में पहले ही उल्लेख किया गया है।
 – 
colidyre
25 फरवरी 2020, 03:01
कैसे आपने परिवेश की नकल की? conda clone या pip install -r requirements.txt या क्या आपने सचमुच सिर्फ फोल्डर को कॉपी किया है?
 – 
James
28 फरवरी 2020, 01:27

2 जवाब

आपका प्रश्न इस बारे में है कि दो संस्करणों में क्या अंतर हो सकता है। मैं विनम्रतापूर्वक सुझाव दूंगा कि यदि आप एक उपयोगी उत्तर चाहते हैं तो आपको उपयोगकर्ता समुदाय को अधिक जानकारी प्रदान करने की आवश्यकता होगी। मेरे सिर के ऊपर से, यहां कुछ संभावनाएं हैं:

  1. पायथन के विभिन्न संस्करण
  2. डीप लाइब्रेरी के विभिन्न संस्करण
  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 नामक एक पूर्व-मौजूदा वर्ग है। यह कहने के लिए कि निश्चित रूप से आपके कोड पर एक नज़र डालने की आवश्यकता क्यों होगी।

3
Matt L. 27 फरवरी 2020, 00:32

जब आप इसे चलाते हैं तो DEAP लाइब्रेरी एक व्यक्तिगत वर्ग बनाती है। यदि आप इसे दो बार चलाते हैं, तो यह पहले से परिभाषित व्यक्तिगत वर्ग को अधिलेखित कर देगा। अपने नए परिवेश में, कहीं न कहीं, आप दो बार DEAP चला रहे हैं।

प्रिंट आउट के संबंध में भिन्न व्यवहार दर्शाता है कि आपके परिवेश वास्तव में समान नहीं हैं। शायद डीईएपी का संस्करण अलग है। आप deap.__version__ चर की जांच कर सकते हैं और तुलना कर सकते हैं।

0
Sohrab T 29 फरवरी 2020, 05:00