पायथन में डिप्रेशन चेतावनियों को कैसे नजरअंदाज करें


176

मुझे यह मिलता रहा:

DeprecationWarning: integer argument expected, got float

मैं इस संदेश को कैसे छोड़ दूं? क्या पायथन में चेतावनी से बचने का कोई तरीका है?

जवाबों:


121

warningsमॉड्यूल के प्रलेखन से :

 #!/usr/bin/env python -W ignore::DeprecationWarning

यदि आप विंडोज पर हैं: -W ignore::DeprecationWarningपायथन के तर्क के रूप में पास करें । हालांकि, इस मुद्दे को हल करने के लिए बेहतर है, इंट का कास्टिंग करके ।

(ध्यान दें कि पायथन 3.2 में, डिफ़ॉल्ट रूप से डेप्रिसिएशन चेतावनियों को अनदेखा किया गया है।)


8
काश मैं यह काम कर पाता ... मुझे एक /usr/bin/env: python -W ignore::DeprecationWarning: No such file or directoryत्रुटि मिलती है । यह काम करता है अगर मैं -W ignore::DeprecationWarningकमांड-लाइन पर विकल्प के साथ अजगर चलाता हूं , लेकिन / usr / bin / env इसके साथ सौदा नहीं करता है।
वेरोनिका

4
एक विंडोज़-केवल समाधान होने लगता है।
डेनियल मील्स

15
आप env चर सेट कर सकते हैं PYTHONWARNINGS इसने मेरे export PYTHONWARNINGS="ignore::DeprecationWarning:simplejson"लिए काम किया django json deprication चेतावनियों को sorl से निष्क्रिय करने के लिए
yvess

@yvess, अगर यह एक उत्तर था, तो मैं इसके लिए मतदान करता। विशिष्ट चेतावनी प्रणाली की अनदेखी करने के लिए एक साफ तरीका लगता है। मैंने इसे अपने ~ / .profile में डाल दिया। बहुत अच्छा काम करता है।
एलनबेरी

नमस्ते हम कुछ इस प्रकार की सूचना के संदेश के लिए इस डिप्रेसेशन चेतावनी संदेश को कैसे बदल सकते हैं। जो मैं चाहूंगा वह यह है कि कंसोल पर संदेश को किसी भी प्रकार की चेतावनी के रूप में वर्गीकृत न किया जाए।
कृष्ण ओझा

194

आपको बस अपना कोड ठीक करना चाहिए, लेकिन सिर्फ मामले में,

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning) 

2
मेरे लिए काम किया iPython का उपयोग कर
zbinsd

21
यह मेरे लिए बिल्कुल भी काम नहीं करता है, फिर भी deprecationwarnings देखकर।
user1244215

8
@ user1244215 मैं गलत हो सकता हूं, लेकिन मुझे लगता है कि आपके कोड में यह मायने रखता है कि आप कहां चलते हैं warnings.filterwarnings("ignore", category=DeprecationWarning)। मुझे लगता है कि आपको पुस्तकालय को आयात करने के बाद आपको इसे चलाना होगा जो कि चेतावनियों से बाहर कर रहे हैं, हालांकि मुझसे गलती हो सकती है।
जैक केली

1
@CodingYourLife श्रेणी की आवश्यकता है ताकि आप अभी भी अन्य प्रकार की चेतावनियों को देखेंगे जैसे कि रनटाइमवेयरिंग आदि
ismail

1
मेरे मामले में, कोड जो चेतावनी दे रहा था from xgboost import XGBClassifierwarnings.filterwarnings("ignore", category=DeprecationWarning)काम करने के लिए मुझे तुरंत उस आयात से पहले रखना पड़ा ।
sedeh

193

मेरे पास ये थे:

/home/eddyp/virtualenv/lib/python2.6/site-packages/Twisted-8.2.0-py2.6-linux-x86_64.egg/twisted/persisted/sob.py:12:
DeprecationWarning: the md5 module is deprecated; use hashlib instead import os, md5, sys

/home/eddyp/virtualenv/lib/python2.6/site-packages/Twisted-8.2.0-py2.6-linux-x86_64.egg/twisted/python/filepath.py:12:
DeprecationWarning: the sha module is deprecated; use the hashlib module instead import sha

इसे इसके साथ तय करें:

import warnings

with warnings.catch_warnings():
    warnings.filterwarnings("ignore",category=DeprecationWarning)
    import md5, sha

yourcode()

अब आप अभी भी अन्य सभी प्राप्त DeprecationWarningकरते हैं, लेकिन इसके कारण नहीं हैं:

import md5, sha

2
बहुत बढ़िया, बहुत बहुत धन्यवाद !! (मुझे एक पल का एहसास हुआ कि मैं इसमें कोड के गैर-आयात बिट्स को भी लपेट सकता हूं, क्योंकि कुछ पैकेज भी आयात के बाद उपयोग किए जाने पर DeprecationWarnings उत्पन्न कर रहे थे।) केवल विशिष्ट विशिष्ट DeprecationWarnings को चुप करने का बहुत अच्छा तरीका है जो पहले से ही देखा और तय किया है। मैं नजरअंदाज करना चाहता हूं।
वेरोनिका

29

मुझे ऐसा करने का सबसे साफ तरीका मिला (विशेषकर खिड़कियों पर) निम्नलिखित को C: \ Python26 \ Lib \ साइट-संकुल \ sitecustomize.py में जोड़कर है:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

ध्यान दें कि मुझे यह फ़ाइल बनानी थी। अगर आपका अलग है, तो निश्चित रूप से अजगर को रास्ता बदल दें।


26

इनमें से किसी भी उत्तर ने मेरे लिए काम नहीं किया इसलिए मैं इसे हल करने के लिए अपना रास्ता पोस्ट करूंगा। मैं निम्नलिखित at the beginning of my main.pyस्क्रिप्ट का उपयोग करता हूं और यह ठीक काम करता है।


निम्नलिखित का उपयोग करें जैसा कि यह है (इसे कॉपी-पेस्ट करें):

def warn(*args, **kwargs):
    pass
import warnings
warnings.warn = warn

उदाहरण:

import "blabla"
import "blabla"

def warn(*args, **kwargs):
    pass
import warnings
warnings.warn = warn

# more code here...
# more code here...


4
अन्य सभी समाधानों के नहीं होने पर काम किया। धन्यवाद!
cxxl

इससे मैं भी बच गया। खुशी है कि मैं मदद कर सकता था।
सर्लाक

एस्ट्रोपी डिप्रेशन चेतावनियों के लिए 3.7.3 में काम नहीं करता है। :(
अंतर्ग्रहण करें

मेरे लिए काम किया, धन्यवाद :)
Valkyrie55

बढ़िया खबर ! चीयर्स
सर्लौक

6

सही तर्क पारित करें? : पी

अधिक गंभीर नोट पर, आप तर्क को पारित कर सकते हैं -Wi :: DeprecationWarning कमांड लाइन पर दुभाषिया चेतावनियों को अनदेखा करने के लिए दुभाषिया पर।


5

डॉकटर समाधान

  • अजगर आवेदन को चलाने से पहले सभी चेतावनियों को अक्षम करें
    • आप अपने डॉक्यूमेंट किए गए परीक्षणों को भी अक्षम कर सकते हैं
ENV PYTHONWARNINGS="ignore::DeprecationWarning"


4

जब आप केवल कार्यों में चेतावनी को अनदेखा करना चाहते हैं तो आप निम्न कार्य कर सकते हैं।

import warnings
from functools import wraps


def ignore_warnings(f):
    @wraps(f)
    def inner(*args, **kwargs):
        with warnings.catch_warnings(record=True) as w:
            warnings.simplefilter("ignore")
            response = f(*args, **kwargs)
        return response
    return inner

@ignore_warnings
def foo(arg1, arg2):
    ...
    write your code here without warnings
    ...

@ignore_warnings
def foo2(arg1, arg2, arg3):
    ...
    write your code here without warnings
    ...

जिस फ़ंक्शन को आप सभी चेतावनियों को अनदेखा करना चाहते हैं, उस पर बस @ignore_warnings डेकोरेटर जोड़ें


3

यदि आप Python3 का उपयोग कर रहे हैं तो नीचे दिए गए कोड को आज़माएं:

import sys

if not sys.warnoptions:
    import warnings
    warnings.simplefilter("ignore")

या यह कोशिश करो ...

import warnings

def fxn():
    warnings.warn("deprecated", DeprecationWarning)

with warnings.catch_warnings():
    warnings.simplefilter("ignore")
    fxn()

या यह कोशिश करो ...

import warnings
warnings.filterwarnings("ignore")

2

अजगर ३

अपनी लाइनें लिखने से पहले याद रखने में आसान रेखाएँ नीचे लिखें:

import warnings

warnings.filterwarnings("ignore")

0

यदि आप जानते हैं कि आप क्या कर रहे हैं, तो एक और तरीका बस उस फ़ाइल को ढूंढना है जो आपको चेतावनी देती है (फ़ाइल का पथ चेतावनी की जानकारी में दिखाया गया है), उन लाइनों पर टिप्पणी करें जो चेतावनी उत्पन्न करती हैं।


0

अजगर 3 के लिए, सभी चेतावनियों को अनदेखा करने के लिए बस नीचे दिए गए कोड लिखें।

from warnings import filterwarnings
filterwarnings("ignore")

-2

इसके बारे में आपको मारने के लिए नहीं, लेकिन आपको चेतावनी दी जा रही है कि आप जो कर रहे हैं, वह संभवत: तब काम करना बंद कर देगा जब आप अगले अजगर को अपग्रेड करेंगे। इंट में बदलें और इसके साथ किया जाए।

Btw। आप अपने स्वयं के चेतावनी हैंडलर भी लिख सकते हैं। बस एक फ़ंक्शन असाइन करें जो कुछ भी नहीं करता है। एक कस्टम स्ट्रीम के लिए अजगर चेतावनी को पुनर्निर्देशित कैसे करें?


4
यह सलाह तभी काम करती है जब यह वास्तव में उसका अपना कोड हो न कि किसी तीसरे पक्ष के पैकेज से।
क्रिस्टोफर नाई
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.