LoadError: InitError: при предварительной компиляции в новой среде - PullRequest
1 голос
/ 03 августа 2020

Я хотел начать использовать выделенные среды для всех моих проектов julia, но активация новой среды и использование пакетов (например, Plots.jl) приводит к предварительной компиляции, которая завершается ошибкой со следующей ошибкой:

 Activating environment at `~/Documents/baro/Project.toml`

julia> using Plots
[ Info: Precompiling Plots [91a5bcdd-55d7-5caf-9e0b-520d859cae80]
ERROR: LoadError: InitError: could not load library "/home/marius/.julia/artifacts/08ab4b2de494e1d61e581ab1fbd610b0b4d1876f/lib/libavdevice.so"
libx264.so.157: cannot open shared object file: No such file or directory
Stacktrace:
 [1] dlopen(::String, ::UInt32; throw_error::Bool) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.4/Libdl/src/Libdl.jl:109
 [2] dlopen at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.4/Libdl/src/Libdl.jl:109 [inlined] (repeats 2 times)
 [3] __init__() at /home/marius/.julia/packages/FFMPEG_jll/tCUYA/src/wrappers/x86_64-linux-gnu.jl:231
 [4] _include_from_serialized(::String, ::Array{Any,1}) at ./loading.jl:697
 [5] _require_search_from_serialized(::Base.PkgId, ::String) at ./loading.jl:781
 [6] _require(::Base.PkgId) at ./loading.jl:1006
 [7] require(::Base.PkgId) at ./loading.jl:927
 [8] require(::Module, ::Symbol) at ./loading.jl:922
 [9] include(::Module, ::String) at ./Base.jl:377
 [10] top-level scope at none:2
 [11] eval at ./boot.jl:331 [inlined]
 [12] eval(::Expr) at ./client.jl:449
 [13] top-level scope at ./none:3
during initialization of module FFMPEG_jll
in expression starting at /home/marius/.julia/packages/FFMPEG/vocw2/src/FFMPEG.jl:3
ERROR: LoadError: Failed to precompile FFMPEG [c87230d0-a227-11e9-1b43-d7ebe4e7570a] to /home/marius/.julia/compiled/v1.4/FFMPEG/TGvga_eB360.ji.
Stacktrace:
 [1] error(::String) at ./error.jl:33
 [2] compilecache(::Base.PkgId, ::String) at ./loading.jl:1272
 [3] _require(::Base.PkgId) at ./loading.jl:1029
 [4] require(::Base.PkgId) at ./loading.jl:927
 [5] require(::Module, ::Symbol) at ./loading.jl:922
 [6] include(::Module, ::String) at ./Base.jl:377
 [7] top-level scope at none:2
 [8] eval at ./boot.jl:331 [inlined]
 [9] eval(::Expr) at ./client.jl:449
 [10] top-level scope at ./none:3
in expression starting at /home/marius/.julia/packages/Plots/LWw1t/src/Plots.jl:15
ERROR: Failed to precompile Plots [91a5bcdd-55d7-5caf-9e0b-520d859cae80] to /home/marius/.julia/compiled/v1.4/Plots/ld3vC_eB360.ji.
Stacktrace:
 [1] error(::String) at ./error.jl:33
 [2] compilecache(::Base.PkgId, ::String) at ./loading.jl:1272
 [3] _require(::Base.PkgId) at ./loading.jl:1029
 [4] require(::Base.PkgId) at ./loading.jl:927
 [5] require(::Module, ::Symbol) at ./loading.jl:922

Это также происходит с некоторыми другими пакетами, такими как ControlSystems. Версия julia - 1.4.2, но я смог воспроизвести эту ошибку с 1.5.0 и на другом компьютере с 1.3.1. Обе системы работают под управлением Ubuntu 20.04 LTS.

То, что я пробовал до сих пор, было:

  • Восстановление пакета Pkg.build()
  • Убедитесь, что файл, который должен быть загружен, существует (он существовал)
  • Обновление libx264
  • Удаление всех пакетов в папке .julia и повторная установка всего с помощью Pkg.instantiate()

Любая помощь в запуске пакетов будет буду очень признателен, так как мне очень нравится идея иметь отдельную среду для каждого проекта. Также в 1.3.1 даже после переключения в среду по умолчанию ошибка все еще возникает.

1 Ответ

0 голосов
/ 03 августа 2020

Проблема, похоже, кроется в пакете FFMPEG. Следующее решило проблему для меня: Удалить FFMPEG. Затем удалите папку, указанную в сообщении об ошибке. В вашем случае: "/home/marius/.julia/artifacts/08ab4b2de494e1d61e581ab1fbd610b0b4d1876f/lib/libavdevice.so" Затем снова добавьте FFPEG, что приведет к изменению в Manifest.toml, чего не произойдет, если вы просто удалите FFMPEG:

Updating `~/.julia/environments/v1.3/Manifest.toml`
  [1270edf5] ↓ x264_jll v2020.7.14+0 ⇒ v2019.5.25+2

Попробуйте: using FFMPEG, Plots. Тогда я смог предварительно скомпилировать графики.

...