моём типе одно из полей -- DataFrame. Следуя документации расширил JLD2.writeas, и Base.convert. Проверяю в REPL, как десериализует мой файл после перезапуска сессии Julia: пока не вызвать using DataFrames вместо датафрейма каша из столбцов. Так и должно быть?
Моё наивное предположение -- метод show сохряняется куда-то рядом в jld2 файл. Это не так?
Так-то в целом всё нормально распаковывается, если вызван DataFrames и модуль, где объявляется кастомный тип.
jldopen("example.jld2", "w") do file file["mygroup/mystuff"] = 42 end # or save("example.jld2", "mygroup/mystuff", 42)
Столкнулся сейчас с очень труднообъяснимым багом, который даже не ронял рантайм с ошибкой, а просто вешал скрипт так, что приходилось CTRL+C-шить. Дебаггер же в VS просто крашился так, что я не успевал толком прочесть, что именно сломалось. Эпицентр проблемы: попытка выполнить JLD2.jldopen, а конкретнее, внутри do-блока обратиться к существующему полю файла: JLD2.jldopen("filename.jld2", "r+") do file object = file["object_name"] # именно если имя валидно end В REPL не воспроизводилось: читаемый jld2 файл не битый, ничего такого. Дебаггер вылетал с негуглящейся "invalid struct allocation". Помогло сделать git stash и пойти по шагам, от момента, когда всё работало. Оказалось, я сделал файл исполняемым (chmod +x) и добавил наверх скрипта не разобравшись шебанг и такую вот конструкцию, взятую откуда-то из Дискорса #!/bin/bash #= exec julia -O0 --compile=min "${BASH_SOURCE[0]}" "$@" =# чтобы запускать было удобнее ./script.jl Когда убрал это, запустил обычным образом julia script.jl и вроде бы теперь не вылетает
#!/usr/bin/env julia --project=@.
Обсуждают сегодня