2010-02-11 11 views
6

Jestem obecnie coraz ostrzeżenie za każdym razem uruchomić skrypt Pythona, który używa MySQLdb:błąd Python podczas korzystania MySQLdb - moduł zestawów jest przestarzała

/var/lib/python-support/python2.6/MySQLdb/__init__.py:34: 
DeprecationWarning: the sets module is deprecated 
    from sets import ImmutableSet 

wolałbym nie zadzierać z ich lib, jeśli to możliwe. Jestem na serwerze Ubuntu. Ktoś wie w prosty sposób, aby naprawić tę wiadomość ostrzegawczą?

Dzięki

UPDATE: Stała ona na podstawie sugestii poniżej i tym linkiem: https://bugzilla.redhat.com/show_bug.cgi?id=505611

import warnings 
warnings.filterwarnings('ignore', '.*the sets module is deprecated.*', 
         DeprecationWarning, 'MySQLdb') 
import MySQLdb 
+0

+1 dzięki! to było pomocne !! –

Odpowiedz

6

Zrób to zanim moduł mysql jest importowany

import warnings 
warnings.filterwarnings(action="ignore", message='the sets module is deprecated') 
import sets 
+2

Należy zamiast tego zignorować komunikat DeprecationWarnings z modułu MySQLdb lub zignorować użycie modułu zestawów, którym * sterujesz *, lub inne typy ostrzeżeń o pasującym tekście. –

0

Wszystko to oznacza to moduł zestawy (dokładniej część ImmutableSet) jest przestarzała, i powinieneś użyć jego wymiany, ustawić. Zestaw jest wbudowany, więc nie trzeba go importować.

Jeśli potrzebujesz niezmienny zestaw, powinien zadziałać frozenset().

+0

Niestety to nie jego kod korzysta z modułu zestawów. –

+0

Witaj Dominic .. dzięki za odpowiedź. Jest to biblioteka mysqldb, więc nie chcę zmieniać jej kodu, chyba że muszę. jakieś pomysły? – James

1

Możesz zignorować ostrzeżenie przy użyciu modułu warnings lub -W dla Pythona. Nie ignoruj ​​wszystko DeprecationWarnings jednak tylko te z MySQLdb :)

+0

dzięki Thomas, jak mógłbym zignorować te z mysqldb? – James

+0

Przekazujesz odpowiedni moduł jako argument "moduł" do filtra ostrzeżeń. –

Powiązane problemy