Estou trabalhando com código que lança muitos (para mim no momento) avisos inúteis usando a warnings
biblioteca. Ao ler (/ digitalizar) a documentação, encontrei apenas uma maneira de desativar avisos para funções únicas . Mas não quero mudar muito do código.
Existe talvez uma bandeira como python -no-warning foo.py
?
O que você recomendaria?
python
suppress-warnings
Framester
fonte
fonte
FutureWarning: This search is broken in 1.3 and earlier, and will be fixed in a future version. If you rely on the current behaviour, change it to [this other thing]
. Prefiro ignorar os avisos agora e esperar que eles sejam corrigidos silenciosamente do que escrever códigos desnecessariamente feios apenas para evitar um aviso inofensivo.Respostas:
Existe a opção -W .
python -W ignore foo.py
fonte
Você olhou para a seção suprimir avisos dos documentos python?
Eu não desculpo, mas você pode simplesmente suprimir todos os avisos com isso:
Ex:
fonte
category
argumento:warnings.filterwarnings("ignore", category=DeprecationWarning)
warnings.filterwarnings
função:module
. Ele permite que você ignore avisos do módulo especificado.Você também pode definir uma variável de ambiente (novo recurso em 2010 - ie python 2.7)
Teste como este: Padrão
Ignorar avisos
Para avisos de descontinuação , consulte como ignorar-avisos de descontinuação em python
Copiado aqui ...
Da documentação do
warnings
módulo :Se você estiver no Windows: passe
-W ignore::DeprecationWarning
como argumento para o Python. Melhor ainda resolver o problema, transmitindo para int .(Observe que no Python 3.2, os avisos de descontinuação são ignorados por padrão.)
Ou:
Agora você ainda recebe todos os outros
DeprecationWarning
s, mas não os causados por:fonte
tox
, adicionarPYTHONWARNINGS=ignore
asetenv
torna a saída menos suja.Esta é uma pergunta antiga, mas há algumas orientações mais recentes no PEP 565 que, para desativar todos os avisos, se você estiver escrevendo um aplicativo python, use:
A razão pela qual isso é recomendado é que ele desativa todos os avisos por padrão, mas permite que eles sejam ativados novamente na
python -W
linha de comando ouPYTHONWARNINGS
.fonte
Se você não quer algo complicado, então:
fonte
warnings.filterwarnings("default", category=FutureWarning)
Se você souber quais são os avisos inúteis que costuma encontrar, poderá filtrá-los por mensagem.
fonte
Sei que isso é aplicável apenas a um nicho de situações, mas dentro de um
numpy
contexto, eu realmente gosto de usarnp.errstate
:No entanto, usando
np.errstate
:A melhor parte é que você pode aplicar isso apenas a linhas de código muito específicas.
fonte
os avisos são enviados via stderr e a solução simples é anexar '2> / dev / null' à CLI. isso faz muito sentido para muitos usuários, como aqueles com centos 6 que estão presos às dependências do python 2.6 (como o yum) e vários módulos estão sendo levados ao limite da extinção em sua cobertura.
isso é especialmente verdadeiro para criptografia envolvendo SNI et cetera. é possível atualizar o 2.6 para manipulação de HTTPS usando o proc em: https://urllib3.readthedocs.io/en/latest/user-guide.html#ssl-py2
o aviso ainda está em vigor, mas tudo o que você deseja é portado. o redirecionamento do stderr deixará você com uma saída limpa de terminal / shell, embora o próprio conteúdo stdout não seja alterado.
respondendo ao FriendFX. a primeira frase responde diretamente ao problema com uma solução universal. a frase dois (2) leva em consideração a âncora citada re 'desativar avisos', que é específica do python 2.6 e observa que os usuários do RHEL / centos 6 não podem ficar diretamente sem o 2.6. embora nenhum aviso específico tenha sido citado, o parágrafo 2 (2) responde à pergunta 2.6 que eu mais frequentemente encontro sobre as falhas no módulo de criptografia e como alguém pode "modernizar" (ou seja, atualizar, backport, corrigir) o desempenho HTTPS / TLS do python . O parágrafo três (3) apenas explica o resultado do uso de redirecionar e atualizar o módulo / dependências.
fonte