Julia Plots SystemError: открытие файла «/var/folders/1p/d2llcrq564b69q93j1l51k140000gn/T/jl_kqexqS.png»: такого файла или каталога нет.

Я испытываю немного странное поведение из-за процедуры визуализации, которую я написал с помощью Plots.jl. В написанном мною модуле используется код следующей формы (с удалением некоторых нерелевантных деталей). Он предназначен для создания 2D-анимации результатов двумерного уравнения в частных производных.

      anim = @animate for (i,u) in enumerate(sol.u)
    heatmap(u)
end
gif(anim,"output/anim_u.gif",fps=5)

Если я запускаю свою программу с этим кодом в конце, программа зависает на неопределенное время после открытия приложения "gksqt" в доке. Завершение программы приводит к следующей трассировке стека.

      Stacktrace:
  [1] poptask(W::Base.InvasiveLinkedListSynchronized{Task})
    @ Base ./task.jl:760
  [2] wait
    @ ./task.jl:768 [inlined]
  [3] wait(c::Base.GenericCondition{Base.Threads.SpinLock})
    @ Base ./condition.jl:106
  [4] wait(x::Base.Process)
    @ Base ./process.jl:621
  [5] success
    @ ./process.jl:483 [inlined]
  [6] run(::Cmd; wait::Bool)
    @ Base ./process.jl:440
  [7] run
    @ ./process.jl:438 [inlined]
  [8] (::FFMPEG.var"#4#6"{Cmd})(command_path::String)
    @ FFMPEG ~/.julia/packages/FFMPEG/OUpap/src/FFMPEG.jl:112
  [9] (::JLLWrappers.var"#2#3"{FFMPEG.var"#4#6"{Cmd}, String})()
    @ JLLWrappers ~/.julia/packages/JLLWrappers/bkwIo/src/runtime.jl:49
 [10] withenv(::JLLWrappers.var"#2#3"{FFMPEG.var"#4#6"{Cmd}, String}, ::Pair{String, String}, ::Vararg{Pair{String, String}, N} where N)
    @ Base ./env.jl:161
 [11] withenv_executable_wrapper(f::Function, executable_path::String, PATH::String, LIBPATH::String, adjust_PATH::Bool, adjust_LIBPATH::Bool)
    @ JLLWrappers ~/.julia/packages/JLLWrappers/bkwIo/src/runtime.jl:48
 [12] #invokelatest#2
    @ ./essentials.jl:708 [inlined]
 [13] invokelatest
    @ ./essentials.jl:706 [inlined]
 [14] #ffmpeg#7
    @ ~/.julia/packages/JLLWrappers/bkwIo/src/products/executable_generators.jl:7 [inlined]
 [15] ffmpeg
    @ ~/.julia/packages/JLLWrappers/bkwIo/src/products/executable_generators.jl:7 [inlined]
 [16] #exe#2
    @ ~/.julia/packages/FFMPEG/OUpap/src/FFMPEG.jl:111 [inlined]
 [17] ffmpeg_exe
    @ ~/.julia/packages/FFMPEG/OUpap/src/FFMPEG.jl:123 [inlined]
 [18] buildanimation(anim::Plots.Animation, fn::String, is_animated_gif::Bool; fps::Int64, loop::Int64, variable_palette::Bool, verbose::Bool, show_msg::Bool)
    @ Plots ~/.julia/packages/Plots/S2aH5/src/animation.jl:96

Однако, чтобы еще больше усложнить ситуацию, если я попытаюсь запустить блок кода, приведенный выше в REPL, на тех же данных, он завершится ошибкой со следующей трассировкой стека:

      ERROR: SystemError: opening file "/var/folders/1p/d2llcrq564b69q93j1l51k140000gn/T/jl_kqexqS.png": No such file or directory
Stacktrace:
  [1] systemerror(p::String, errno::Int32; extrainfo::Nothing)
    @ Base ./error.jl:168
  [2] #systemerror#62
    @ ./error.jl:167 [inlined]
  [3] systemerror
    @ ./error.jl:167 [inlined]
  [4] open(fname::String; lock::Bool, read::Nothing, write::Nothing, create::Nothing, truncate::Nothing, append::Nothing)
    @ Base ./iostream.jl:293
  [5] open
    @ ./iostream.jl:282 [inlined]
  [6] open(f::Base.var"#326#327"{String}, args::String; kwargs::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ Base ./io.jl:328
  [7] open
    @ ./io.jl:328 [inlined]
  [8] read
    @ ./io.jl:434 [inlined]
  [9] _show(io::IOStream, #unused#::MIME{Symbol("image/png")}, plt::Plots.Plot{Plots.GRBackend})
    @ Plots ~/.julia/packages/Plots/S2aH5/src/backends/gr.jl:1965
 [10] show
    @ ~/.julia/packages/Plots/S2aH5/src/output.jl:215 [inlined]
 [11] png(plt::Plots.Plot{Plots.GRBackend}, fn::String)
    @ Plots ~/.julia/packages/Plots/S2aH5/src/output.jl:7
 [12] frame(anim::Animation, plt::Plots.Plot{Plots.GRBackend})
    @ Plots ~/.julia/packages/Plots/S2aH5/src/animation.jl:20
 [13] frame(anim::Animation)
    @ Plots ~/.julia/packages/Plots/S2aH5/src/animation.jl:18
 [14] macro expansion
    @ ~/.julia/packages/Plots/S2aH5/src/animation.jl:172 [inlined]
 [15] macro expansion
    @ ./REPL[41]:2 [inlined]
 [16] top-level scope
    @ ~/.julia/packages/Plots/S2aH5/src/animation.jl:183

Я полностью сбит с толку таким поведением - если у кого-то есть предложения, я буду очень признателен.

Работает на MacOS 11.2.3 с Julia 1.6.2.

0 ответов

Другие вопросы по тегам