Julia fails to precompile plots

I’m using Julia 1.8 on my Mac with Atom. I know that Atom is not anymore the editor recommended for Julia, but I think my problem is not related to Atom. In fact I have a problem with the package “Plots”: when I run the code:

using Pkg
Pkg.add("Plots")
using Plots

I get the error message:

LoadError: Failed to precompile Plots [91a5bcdd-55d7-5caf-9e0b-520d859cae80] to /Users/matteomassaro/.julia/compiled/v1.8/Plots/jl_Ws5Lcl.
in expression starting at untitled-5f892e86ad849cf5f05bd80a594d2d04:3
error(s::String) at error.jl:35
compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, keep_loaded_modules::Bool) at loading.jl:1707
compilecache at loading.jl:1651 [inlined]
_require(pkg::Base.PkgId) at loading.jl:1337
_require_prelocked(uuidkey::Base.PkgId) at loading.jl:1200
macro expansion at loading.jl:1180 [inlined]
macro expansion at lock.jl:223 [inlined]
require(into::Module, mod::Symbol) at loading.jl:1144
eval at boot.jl:368 [inlined]
include_string(mapexpr::typeof(identity), mod::Module, code::String, filename::String) at loading.jl:1428

So it looks like Julia fails to precompile the package Plots. How can I fix this?

What is your current project environment? You can see this by running

status --manifest

from the package manager prompt.

Can you try installing in a fresh environment? For example,

using Pkg
Pkg.activate(temp=true)
Pkg.add("Plots")
using Plots

The command :

gives me:

(@v1.8) pkg> status --manifest
Status ~/.julia/environments/v1.8/Manifest.toml
⌅ [1520ce14] AbstractTrees v0.3.4
[bf4720bc] AssetRegistry v0.1.0
[c52e3926] Atom v0.12.38
⌅ [00ebfdb7] CSTParser v2.5.0
[d360d2e6] ChainRulesCore v1.15.6
[9e997f8a] ChangesOfVariables v0.1.4
[53a63b46] CodeTools v0.7.1
[da1fd8a2] CodeTracking v1.1.0
[35d6a980] ColorSchemes v3.19.0
[3da002f7] ColorTypes v0.11.4
[c3611d14] ColorVectorSpace v0.9.9
[5ae59095] Colors v0.12.8
[a80b9123] CommonMark v0.8.6
⌅ [34da2185] Compat v3.46.0
[8f4d0f93] Conda v1.7.0
[d38c429a] Contour v0.6.2
[a8cc5b0e] Crayons v4.1.1
[9a962f9c] DataAPI v1.12.0
[864edb3b] DataStructures v0.18.13
[b4f34e82] Distances v0.10.7
[33d173f1] DocSeeker v0.4.3
⌅ [ffbed154] DocStringExtensions v0.8.6
⌅ [e30172f5] Documenter v0.26.3
[c87230d0] FFMPEG v0.4.1
[5789e2e9] FileIO v1.15.0
[53c48c17] FixedPointNumbers v0.8.4
⌅ [08572546] FlameGraphs v0.2.10
[59287772] Formatting v0.4.2
[de31a74c] FunctionalCollections v0.5.0
[fb4132e2] FuzzyCompletions v0.5.1
⌃ [28b8d3ca] GR v0.69.3
[42e2da0e] Grisu v1.0.2
⌅ [cd3eb016] HTTP v0.9.17
[9fb69e20] Hiccup v0.2.2
[7073ff75] IJulia v1.23.3
⌅ [b5f81e59] IOCapture v0.1.1
[9b13fd28] IndirectArrays v1.0.0
[83e8ac13] IniFile v0.5.1
[3587e190] InverseFunctions v0.1.8
[92d709cd] IrrationalConstants v0.1.1
[1019f520] JLFzf v0.1.5
[692b3bcd] JLLWrappers v1.4.1
[682c06a0] JSON v0.21.3
⌅ [98e50ef6] JuliaFormatter v0.13.7
[aa1ae85d] JuliaInterpreter v0.9.15
[e5e0dc1b] Juno v0.8.4
[7c4cb9fa] LNR v0.2.1
[b964fa9f] LaTeXStrings v1.3.0
[23fbe1c1] Latexify v0.15.17
[50d2b5c4] Lazy v0.15.1
⌅ [1d6d02ad] LeftChildRightSiblingTrees v0.1.3
[2ab3a3ac] LogExpFunctions v0.3.18
[1914dd2f] MacroTools v0.5.10
[739be429] MbedTLS v1.1.6
[442fdcdd] Measures v0.3.1
[e89f7d12] Media v0.5.0
[e1d29d7a] Missings v1.0.2
[77ba4419] NaNMath v1.0.1
[510215fc] Observables v0.5.2
[bac558e1] OrderedCollections v1.4.1
[69de0a69] Parsers v2.4.0
[fa939f87] Pidfile v1.3.0
[b98c9c47] Pipe v1.3.0
[ccf2f8ad] PlotThemes v3.0.0
[995b91a9] PlotUtils v1.3.1
[91a5bcdd] Plots v1.35.2
[21216c6a] Preferences v1.3.0
[3cdcf5f2] RecipesBase v1.3.0
[01d81517] RecipesPipeline v0.6.6
[189a3867] Reexport v1.2.2
[05181044] RelocatableFolders v1.0.0
[ae029012] Requires v1.3.0
[6c6a2e73] Scratch v1.1.1
[992d4aef] Showoff v1.0.3
[66db9d55] SnoopPrecompile v1.0.1
[b85f4697] SoftGlobalScope v1.1.0
[a2af1166] SortingAlgorithms v1.0.1
[276daf66] SpecialFunctions v2.1.7
[82ae8749] StatsAPI v1.5.0
[2913bbd2] StatsBase v0.33.21
⌅ [88034a9c] StringDistances v0.10.0
[62fd8b95] TensorCore v0.1.1
⌅ [0796e94c] Tokenize v0.5.21
[a2a6695c] TreeViews v0.3.0
[30578b45] URIParser v0.4.1
[5c2747f8] URIs v1.4.0
[1cfade01] UnicodeFun v0.4.1
[41fe7b60] Unzip v0.2.0
[81def892] VersionParsing v1.3.0
[0f1e0344] WebIO v0.8.18
[104b5d7c] WebSockets v1.5.9
[cc8bc4a8] Widgets v0.6.6
[c2297ded] ZMQ v1.2.1
[6e34b625] Bzip2_jll v1.0.8+0
[83423d85] Cairo_jll v1.16.1+1
[2e619515] Expat_jll v2.4.8+0
[b22a6f82] FFMPEG_jll v4.4.2+2
[a3f928ae] Fontconfig_jll v2.13.93+0
[d7e528f0] FreeType2_jll v2.10.4+0
[559328eb] FriBidi_jll v1.0.10+0
[0656b61e] GLFW_jll v3.3.8+0
[d2c73de3] GR_jll v0.69.1+0
[78b55507] Gettext_jll v0.21.0+0
[7746bdde] Glib_jll v2.74.0+1
[3b182d85] Graphite2_jll v1.3.14+0
[2e76f6c2] HarfBuzz_jll v2.8.1+1
[aacddb02] JpegTurbo_jll v2.1.2+0
[c1c5ebd0] LAME_jll v3.100.1+0
[88015f11] LERC_jll v3.0.0+1
[dd4b983a] LZO_jll v2.10.1+0
[e9f186c6] Libffi_jll v3.2.2+1
[d4300ac3] Libgcrypt_jll v1.8.7+0
[7e76a0d4] Libglvnd_jll v1.3.0+3
[7add5ba3] Libgpg_error_jll v1.42.0+0
[94ce4f54] Libiconv_jll v1.16.1+1
[4b2f31a3] Libmount_jll v2.35.0+0
[89763e89] Libtiff_jll v4.4.0+0
[38a345b3] Libuuid_jll v2.36.0+0
[e7412a2a] Ogg_jll v1.3.5+1
[458c3c95] OpenSSL_jll v1.1.17+0
[efe28fd5] OpenSpecFun_jll v0.5.5+0
[91d4177d] Opus_jll v1.3.2+0
[30392449] Pixman_jll v0.40.1+0
[ea2cea3b] Qt5Base_jll v5.15.3+1
[a2964d1f] Wayland_jll v1.19.0+0
[2381bf8a] Wayland_protocols_jll v1.25.0+0
[02c8fc9c] XML2_jll v2.9.14+0
[aed1982a] XSLT_jll v1.1.34+0
[4f6342f7] Xorg_libX11_jll v1.6.9+4
[0c0b7dd1] Xorg_libXau_jll v1.0.9+4
[935fb764] Xorg_libXcursor_jll v1.2.0+4
[a3789734] Xorg_libXdmcp_jll v1.1.3+4
[1082639a] Xorg_libXext_jll v1.3.4+4
[d091e8ba] Xorg_libXfixes_jll v5.0.3+4
[a51aa0fd] Xorg_libXi_jll v1.7.10+4
[d1454406] Xorg_libXinerama_jll v1.1.4+4
[ec84b674] Xorg_libXrandr_jll v1.5.2+4
[ea2f1a96] Xorg_libXrender_jll v0.9.10+4
[14d82f49] Xorg_libpthread_stubs_jll v0.1.0+3
[c7cfdc94] Xorg_libxcb_jll v1.13.0+3
[cc61e674] Xorg_libxkbfile_jll v1.1.0+4
[12413925] Xorg_xcb_util_image_jll v0.4.0+1
[2def613f] Xorg_xcb_util_jll v0.4.0+1
[975044d2] Xorg_xcb_util_keysyms_jll v0.4.0+1
[0d47668e] Xorg_xcb_util_renderutil_jll v0.3.9+1
[c22f9ab0] Xorg_xcb_util_wm_jll v0.4.1+1
[35661453] Xorg_xkbcomp_jll v1.4.2+4
[33bec58e] Xorg_xkeyboard_config_jll v2.27.0+4
[c5fb5394] Xorg_xtrans_jll v1.4.0+3
[8f1865be] ZeroMQ_jll v4.3.4+0
[3161d3a3] Zstd_jll v1.5.2+0
⌅ [214eeab7] fzf_jll v0.29.0+0
[a4ae2306] libaom_jll v3.4.0+0
[0ac62f75] libass_jll v0.15.1+0
[f638f0a6] libfdk_aac_jll v2.0.2+0
[b53b4c65] libpng_jll v1.6.38+0
[a9144af2] libsodium_jll v1.0.20+0
[f27f6e37] libvorbis_jll v1.3.7+1
[1270edf5] x264_jll v2021.5.5+0
[dfaa095f] x265_jll v3.5.0+0
[d8fb68d0] xkbcommon_jll v1.4.1+0
[0dad84c5] ArgTools v1.1.1
[56f22d72] Artifacts
[2a0f44e3] Base64
[ade2ca70] Dates
[8bb1440f] DelimitedFiles
[8ba89e20] Distributed
[f43a241f] Downloads v1.6.0
[7b1f6079] FileWatching
[b77e0a4c] InteractiveUtils
[b27032c2] LibCURL v0.6.3
[76f85450] LibGit2
[8f399da3] Libdl
[37e2e46d] LinearAlgebra
[56ddb016] Logging
[d6f4376e] Markdown
[a63ad114] Mmap
[ca575930] NetworkOptions v1.2.0
[44cfe95a] Pkg v1.8.0
[de0858da] Printf
[9abbd945] Profile
[3fa0cd96] REPL
[9a3f8284] Random
[ea8e919c] SHA v0.7.0
[9e88b42a] Serialization
[1a1011a3] SharedArrays
[6462fe0b] Sockets
[2f01184e] SparseArrays
[10745b16] Statistics
[fa267f1f] TOML v1.0.0
[a4e569a6] Tar v1.10.1
[8dfed614] Test
[cf7118a7] UUIDs
[4ec0a83e] Unicode
[e66e0078] CompilerSupportLibraries_jll v0.5.2+0
[deac9b47] LibCURL_jll v7.84.0+0
[29816b5a] LibSSH2_jll v1.10.2+0
[c8ffd9c3] MbedTLS_jll v2.28.0+0
[14a3606d] MozillaCACerts_jll v2022.2.1
[4536629a] OpenBLAS_jll v0.3.20+0
[05823500] OpenLibm_jll v0.8.1+0
[efcefdf7] PCRE2_jll v10.40.0+0
[83775a58] Zlib_jll v1.2.12+3
[8e850b90] libblastrampoline_jll v5.1.1+0
[8e850ede] nghttp2_jll v1.48.0+0
[3f19e933] p7zip_jll v17.4.0+0
Info Packages marked with ⌃ and ⌅ have new versions available, but those with ⌅ are restricted by compatibility constraints from upgrading. To see why use status --outdated -m

I also tried :

But I get the same error as before.

0.69.4 is the latest release for GR. You should try to Pkg.update() as there have been some bug fixes.

1 Like

if I do that I get:

julia> Pkg.update()
Updating registry at ~/.julia/registries/General.toml
No Changes to /private/var/folders/zw/gq5r1ghj2jb57rmp8k58cz3c0000gn/T/jl_b4CrkG/Project.toml
No Changes to /private/var/folders/zw/gq5r1ghj2jb57rmp8k58cz3c0000gn/T/jl_b4CrkG/Manifest.toml

Which is strange because it seems I already have all the latest versions, as it says “no changes”. I don’t know what I’m doing wrong here.

You can see why things are held back by status --outdated -m in Pkg mode in the REPL.

status --outdated -m

gives me:

(jl_b4CrkG) pkg> status --outdated -m 
Status `/private/var/folders/zw/gq5r1ghj2jb57rmp8k58cz3c0000gn/T/jl_b4CrkG/Manifest.toml`
⌅ [214eeab7] fzf_jll v0.29.0+0 (<v0.30.0+0): JLFzf

But I don’t really know what it means…

Weird, GR should update itself to 0.69.4. I can tag a new Plots patch if needed.

I’m open to different solutions. Though It would be nice to begin able to use the package Plots… The strange thing is that it was working before and then for some reason it started giving me that error. I also tried to uninstall Julia and Atom and install them again. But nothing seems to work.

After Pkg.update(), can you show again pkg> status -m Plots GR ?

You can try so set the environment variable JULIA_PKG_SERVER to force julia to use the github registry.

$ JULIA_PKG_SERVER='' julia
julia> ]
pkg> update

I did

Pkg.update()

and then

which gives me:

(jl_b4CrkG) pkg> status -m Plots GR 
Status `/private/var/folders/zw/gq5r1ghj2jb57rmp8k58cz3c0000gn/T/jl_b4CrkG/Manifest.toml`
  [28b8d3ca] GR v0.69.4
  [91a5bcdd] Plots v1.35.2

But doing

$ JULIA_PKG_SERVER='' julia
julia> ]
pkg> update

gives me a syntax error. Do I have to run that in Julia in the REPL?

This is what I wanted to see:

  [28b8d3ca] GR v0.69.4
  [91a5bcdd] Plots v1.35.2

Now type julia> using Plots, it should work.

Unfortunately it doesn’t. Same error as before…

Can you delete ~/.julia/compiled and try again ?

Still not working…

Unfortunately, the error message above is not helpful.
Does using Pkg; Pkg.precompile() show the same error ?

yes it gives:

julia> using Pkg; Pkg.precompile()
Precompiling project...
  ✗ GR_jll
  ✗ Plots
  0 dependencies successfully precompiled in 12 seconds. 132 already precompiled.

ERROR: The following 1 direct dependency failed to precompile:

Plots [91a5bcdd-55d7-5caf-9e0b-520d859cae80]

Failed to precompile Plots [91a5bcdd-55d7-5caf-9e0b-520d859cae80] to /Users/matteomassaro/.julia/compiled/v1.8/Plots/jl_MeTmZV.
ERROR: LoadError: InitError: UndefVarError: GR_jll not defined
Stacktrace:
  [1] __init__()
    @ GR.GRPreferences ~/.julia/packages/GR/eEMaG/src/preferences.jl:40
  [2] _include_from_serialized(pkg::Base.PkgId, path::String, depmods::Vector{Any})
    @ Base ./loading.jl:831
  [3] _require_search_from_serialized(pkg::Base.PkgId, sourcepath::String, build_id::UInt64)
    @ Base ./loading.jl:1039
  [4] _require(pkg::Base.PkgId)
    @ Base ./loading.jl:1315
  [5] _require_prelocked(uuidkey::Base.PkgId)
    @ Base ./loading.jl:1200
  [6] macro expansion
    @ ./loading.jl:1180 [inlined]
  [7] macro expansion
    @ ./lock.jl:223 [inlined]
  [8] require(into::Module, mod::Symbol)
    @ Base ./loading.jl:1144
  [9] include(mod::Module, _path::String)
    @ Base ./Base.jl:419
 [10] include(x::String)
    @ Plots ~/.julia/packages/Plots/CUQan/src/Plots.jl:1
 [11] top-level scope
    @ ~/.julia/packages/Plots/CUQan/src/Plots.jl:201
 [12] include
    @ ./Base.jl:419 [inlined]
 [13] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt64}}, source::Nothing)
    @ Base ./loading.jl:1554
 [14] top-level scope
    @ stdin:1
during initialization of module GRPreferences
in expression starting at /Users/matteomassaro/.julia/packages/Plots/CUQan/src/backends/gr.jl:3
in expression starting at /Users/matteomassaro/.julia/packages/Plots/CUQan/src/Plots.jl:1
in expression starting at stdin:1
Stacktrace:
 [1] pkgerror(msg::String)
   @ Pkg.Types /Applications/Julia-1.8.app/Contents/Resources/julia/share/julia/stdlib/v1.8/Pkg/src/Types.jl:67
 [2] precompile(ctx::Pkg.Types.Context, pkgs::Vector{String}; internal_call::Bool, strict::Bool, warn_loaded::Bool, already_instantiated::Bool, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
   @ Pkg.API /Applications/Julia-1.8.app/Contents/Resources/julia/share/julia/stdlib/v1.8/Pkg/src/API.jl:1432
 [3] precompile
   @ /Applications/Julia-1.8.app/Contents/Resources/julia/share/julia/stdlib/v1.8/Pkg/src/API.jl:1063 [inlined]
 [4] #precompile#225
   @ /Applications/Julia-1.8.app/Contents/Resources/julia/share/julia/stdlib/v1.8/Pkg/src/API.jl:1062 [inlined]
 [5] precompile (repeats 2 times)
   @ /Applications/Julia-1.8.app/Contents/Resources/julia/share/julia/stdlib/v1.8/Pkg/src/API.jl:1062 [inlined]
 [6] top-level scope
   @ none:1

Can you restart julia, then type:

julia> ENV["JULIA_DEBUG"] = "GR";
julia> using Pkg; Pkg.precompile()

You should see the debug message as in Cannot Precompile Plots.jl due to GR - #7 by t-bltg.

How did you install Julia? One thing you could try is ignoring your old julia configuration and package files and trying again. You could do this by starting your Julia REPL like this

JULIA_DEPOT_PATH="$HOME/tmp/.julia" julia

(assuming that the $HOME/tmp/.julia directory is not currently used for anything else)

Then try a fresh install of Plots.

This :

gives me as output:


julia> ENV["JULIA_DEBUG"] = "GR";

julia> using Pkg; Pkg.precompile()
Precompiling project...
  ✗ GR_jll
  ✓ Atom
  ✗ Plots
  17 dependencies successfully precompiled in 64 seconds. 150 already precompiled.
  1 dependency precompiled but a different version is currently loaded. Restart julia to access the new version

ERROR: The following 1 direct dependency failed to precompile:

Plots [91a5bcdd-55d7-5caf-9e0b-520d859cae80]

Failed to precompile Plots [91a5bcdd-55d7-5caf-9e0b-520d859cae80] to /Users/matteomassaro/.julia/compiled/v1.8/Plots/jl_vsOjN9.
ERROR: LoadError: InitError: UndefVarError: GR_jll not defined
Stacktrace:
  [1] __init__()
    @ GR.GRPreferences ~/.julia/packages/GR/Wz6ek/src/preferences.jl:40
  [2] _include_from_serialized(pkg::Base.PkgId, path::String, depmods::Vector{Any})
    @ Base ./loading.jl:831
  [3] _require_search_from_serialized(pkg::Base.PkgId, sourcepath::String, build_id::UInt64)
    @ Base ./loading.jl:1039
  [4] _require(pkg::Base.PkgId)
    @ Base ./loading.jl:1315
  [5] _require_prelocked(uuidkey::Base.PkgId)
    @ Base ./loading.jl:1200
  [6] macro expansion
    @ ./loading.jl:1180 [inlined]
  [7] macro expansion
    @ ./lock.jl:223 [inlined]
  [8] require(into::Module, mod::Symbol)
    @ Base ./loading.jl:1144
  [9] include(mod::Module, _path::String)
    @ Base ./Base.jl:419
 [10] include(x::String)
    @ Plots ~/.julia/packages/Plots/CUQan/src/Plots.jl:1
 [11] top-level scope
    @ ~/.julia/packages/Plots/CUQan/src/Plots.jl:201
 [12] include
    @ ./Base.jl:419 [inlined]
 [13] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt64}}, source::Nothing)
    @ Base ./loading.jl:1554
 [14] top-level scope
    @ stdin:1
during initialization of module GRPreferences
in expression starting at /Users/matteomassaro/.julia/packages/Plots/CUQan/src/backends/gr.jl:3
in expression starting at /Users/matteomassaro/.julia/packages/Plots/CUQan/src/Plots.jl:1
in expression starting at stdin:1
Stacktrace:
 [1] pkgerror(msg::String)
   @ Pkg.Types /Applications/Julia-1.8.app/Contents/Resources/julia/share/julia/stdlib/v1.8/Pkg/src/Types.jl:67
 [2] precompile(ctx::Pkg.Types.Context, pkgs::Vector{String}; internal_call::Bool, strict::Bool, warn_loaded::Bool, already_instantiated::Bool, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
   @ Pkg.API /Applications/Julia-1.8.app/Contents/Resources/julia/share/julia/stdlib/v1.8/Pkg/src/API.jl:1432
 [3] precompile
   @ /Applications/Julia-1.8.app/Contents/Resources/julia/share/julia/stdlib/v1.8/Pkg/src/API.jl:1063 [inlined]
 [4] #precompile#225
   @ /Applications/Julia-1.8.app/Contents/Resources/julia/share/julia/stdlib/v1.8/Pkg/src/API.jl:1062 [inlined]
 [5] precompile (repeats 2 times)
   @ /Applications/Julia-1.8.app/Contents/Resources/julia/share/julia/stdlib/v1.8/Pkg/src/API.jl:1062 [inlined]
 [6] top-level scope
   @ none:1