我正在Julia编写一个工具,需要一个包含不推荐功能的包。
我的脚本是从命令行调用的,并且需要很多参数,因此我希望避免使用--depwarn=no
来抑制弃用警告。
相反,我想嵌入这个--depwarn=no
或以某种方式将此信号发送到我的脚本中,这样用户就不必输入它,或者在运行脚本时担心它。
有没有人知道如何只使用Base
Julia而不安装Suppressor.jl之类的其他软件包?
答案 0 :(得分:2)
我最初写过Suppressor,据我所知,目前还没有别的办法,which is why I started Suppressor。
您可以随时将所需的suppress*
宏复制粘贴到您的代码中(但我建议只是诚实地使用Suppressor,如果有更新),所有的Suppressor宏都是自包含的,只需要{ {1}}(如果您使用的是0.6.x,则此宏不需要Base
)。
@suppress_err
(最新版本):Compat
如果您只想删除弃用警告,那么"""
@suppress_err expr
Suppress the STDERR stream for the given expression.
"""
macro suppress_err(block)
quote
if ccall(:jl_generating_output, Cint, ()) == 0
ORIGINAL_STDERR = STDERR
err_rd, err_wr = redirect_stderr()
err_reader = @async read(err_rd, String)
end
value = $(esc(block))
if ccall(:jl_generating_output, Cint, ()) == 0
redirect_stderr(ORIGINAL_STDERR)
close(err_wr)
end
value
end
end
就是您所需要的。最近有关于日志记录的当前Julia master分支已经有所改进,但我还没有检查过那些。