ฉันได้รับสิ่งนี้:
DeprecationWarning: integer argument expected, got float
ฉันจะทำให้ข้อความนี้หายไปได้อย่างไร มีวิธีหลีกเลี่ยงคำเตือนใน Python หรือไม่?
ฉันได้รับสิ่งนี้:
DeprecationWarning: integer argument expected, got float
ฉันจะทำให้ข้อความนี้หายไปได้อย่างไร มีวิธีหลีกเลี่ยงคำเตือนใน Python หรือไม่?
คำตอบ:
จากเอกสารของwarnings
โมดูล :
#!/usr/bin/env python -W ignore::DeprecationWarning
หากคุณใช้ Windows ให้ส่งรหัสผ่าน-W ignore::DeprecationWarning
เป็น Python ดีกว่าแม้ว่าจะแก้ปัญหาได้โดยการหล่อเพื่อint
(โปรดทราบว่าใน Python 3.2 คำเตือนการเลิกใช้จะถูกละเว้นโดยค่าเริ่มต้น)
export PYTHONWARNINGS="ignore::DeprecationWarning:simplejson"
เพื่อปิดการใช้งาน django json คำเตือน deprication จาก sorl
คุณควรแก้ไขรหัสของคุณ แต่ในกรณี
import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)
warnings.filterwarnings("ignore", category=DeprecationWarning)
แต่ฉันคิดว่ามันเป็นเรื่องสำคัญที่ในรหัสของคุณที่คุณเรียก ฉันคิดว่าคุณต้องเรียกใช้สิ่งนี้หลังจากที่คุณนำเข้าห้องสมุดที่คายคำเตือนออกมา
from xgboost import XGBClassifier
ในกรณีของฉันรหัสที่ก่อให้เกิดการเตือนเป็น ฉันต้องใส่warnings.filterwarnings("ignore", category=DeprecationWarning)
ทันทีก่อนที่การนำเข้าจะทำงาน
ฉันมีสิ่งเหล่านี้:
/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
s อื่น ๆ ทั้งหมดแต่ไม่ใช่สิ่งที่เกิดจาก:
import md5, sha
ฉันพบวิธีที่สะอาดที่สุดในการทำเช่นนี้ (โดยเฉพาะบน windows) คือการเพิ่มสิ่งต่อไปนี้ใน C: \ Python26 \ Lib \ site-packages \ sitecustomize.py:
import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)
โปรดทราบว่าฉันต้องสร้างไฟล์นี้ แน่นอนเปลี่ยนเส้นทางเป็นงูหลามหากคุณแตกต่าง
ไม่มีคำตอบใดที่เหมาะกับฉันดังนั้นฉันจะโพสต์วิธีแก้ไขปัญหานี้ ฉันใช้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...
ผ่านการขัดแย้งที่ถูกต้อง? : P
ในบันทึกที่ร้ายแรงยิ่งขึ้นคุณสามารถส่งผ่านอาร์กิวเมนต์ -Wi :: DeprecationWarning บนบรรทัดคำสั่งไปยังล่ามเพื่อละเว้นคำเตือนการคัดค้าน
ENV PYTHONWARNINGS="ignore::DeprecationWarning"
แปลงอาร์กิวเมนต์เป็น int มันง่ายเหมือน
int(argument)
เมื่อคุณต้องการละเว้นคำเตือนเฉพาะในฟังก์ชั่นคุณสามารถทำสิ่งต่อไปนี้
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 มัณฑนากรบนฟังก์ชันที่คุณต้องการละเว้นคำเตือนทั้งหมด
ลองใช้รหัสด้านล่างหากคุณใช้ 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")
Python 3
เพียงเขียนบรรทัดด้านล่างที่จำง่ายก่อนเขียนรหัสของคุณ:
import warnings
warnings.filterwarnings("ignore")
หากคุณรู้ว่าคุณกำลังทำอะไรอยู่อีกวิธีหนึ่งก็คือค้นหาไฟล์ที่เตือนคุณ (เส้นทางของไฟล์นั้นจะแสดงในข้อมูลเตือน) แสดงความคิดเห็นบรรทัดที่สร้างคำเตือน
สำหรับ python 3 เพียงแค่เขียนรหัสด้านล่างเพื่อละเว้นคำเตือนทั้งหมด
from warnings import filterwarnings
filterwarnings("ignore")
เพื่อไม่ให้เอาชนะคุณ แต่คุณถูกเตือนว่าสิ่งที่คุณกำลังทำอยู่มีแนวโน้มที่จะหยุดทำงานเมื่อคุณอัพเกรด python ครั้งต่อไป แปลงเป็น int และทำได้ด้วย
BTW คุณยังสามารถเขียนตัวจัดการคำเตือนของคุณเอง เพียงแค่กำหนดฟังก์ชั่นที่ไม่ทำอะไรเลย วิธีการเปลี่ยนเส้นทางคำเตือนหลามไปยังกระแสที่กำหนดเอง?
/usr/bin/env: python -W ignore::DeprecationWarning: No such file or directory
ข้อผิดพลาด มันทำงานได้ถ้าฉันใช้ python พร้อมกับ-W ignore::DeprecationWarning
ตัวเลือกใน command-line, แต่ / usr / bin / env ไม่ได้จัดการมัน