# Weird error in GitHub action: ERROR: LoadError: KeyError: key "PrecompileTools" not found

**URL:** <https://discourse.julialang.org/t/weird-error-in-github-action-error-loaderror-keyerror-key-precompiletools-not-found/128377>\
**Category:** General Usage\
**Created:** [April 24, 2025, 4:20pm UTC](https://discourse.julialang.org/t/weird-error-in-github-action-error-loaderror-keyerror-key-precompiletools-not-found/128377 "2025-04-24T16:20:57Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![sylvaticus](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sylvaticus/32/203883_2.png) [@sylvaticus](https://discourse.julialang.org/u/sylvaticus)\
**Post date:** [April 24, 2025, 4:20pm UTC](https://discourse.julialang.org/t/weird-error-in-github-action-error-loaderror-keyerror-key-precompiletools-not-found/128377/1 "2025-04-24T16:20:57Z")

</div>

I m trying to push a newer version of a package on GitHub. It tests fine in local, but on github actions I have the following weird error:

```julia
      Testing DICEModel
      Status `/tmp/jl_AC62Th/Project.toml`
ERROR: LoadError: KeyError: key "PrecompileTools" not found
Stacktrace:
  [1] getindex
    @ ./dict.jl:484 [inlined]
  [2] status_ext_info(pkg::Pkg.Types.PackageSpec, env::Pkg.Types.EnvCache)
    @ Pkg.Operations /opt/hostedtoolcache/julia/1.9.4/x64/share/julia/stdlib/v1.9/Pkg/src/Operations.jl:2214
  [3] print_status(env::Pkg.Types.EnvCache, old_env::Nothing, registries::Vector{Pkg.Registry.RegistryInstance}, header::Symbol, uuids::Vector{Base.UUID}, names::Vector{String}; manifest::Bool, diff::Bool, ignore_indent::Bool, outdated::Bool, extensions::Bool, io::IOContext{Base.PipeEndpoint}, mode::Pkg.Types.PackageMode, hidden_upgrades_info::Bool, show_usagetips::Bool)
    @ Pkg.Operations /opt/hostedtoolcache/julia/1.9.4/x64/share/julia/stdlib/v1.9/Pkg/src/Operations.jl:2299
  [4] print_status
    @ /opt/hostedtoolcache/julia/1.9.4/x64/share/julia/stdlib/v1.9/Pkg/src/Operations.jl:2241 [inlined]
  [5] status(env::Pkg.Types.EnvCache, registries::Vector{Pkg.Registry.RegistryInstance}, pkgs::Vector{Pkg.Types.PackageSpec}; header::Nothing, mode::Pkg.Types.PackageMode, git_diff::Bool, env_diff::Nothing, ignore_indent::Bool, io::IOContext{Base.PipeEndpoint}, outdated::Bool, extensions::Bool, hidden_upgrades_info::Bool, show_usagetips::Bool)
    @ Pkg.Operations /opt/hostedtoolcache/julia/1.9.4/x64/share/julia/stdlib/v1.9/Pkg/src/Operations.jl:2472
  [6] status
    @ /opt/hostedtoolcache/julia/1.9.4/x64/share/julia/stdlib/v1.9/Pkg/src/Operations.jl:2443 [inlined]
  [7] (::Pkg.Operations.var"#130#134"{Bool, Cmd, Cmd, Nothing, Pkg.Types.Context, Vector{Tuple{String, Base.Process}}, String, Pkg.Types.PackageSpec})()
    @ Pkg.Operations /opt/hostedtoolcache/julia/1.9.4/x64/share/julia/stdlib/v1.9/Pkg/src/Operations.jl:1959
  [8] withenv(::Pkg.Operations.var"#130#134"{Bool, Cmd, Cmd, Nothing, Pkg.Types.Context, Vector{Tuple{String, Base.Process}}, String, Pkg.Types.PackageSpec}, ::Pair{String, String}, ::Vararg{Pair{String}})
    @ Base ./env.jl:197
  [9] (::Pkg.Operations.var"#117#122"{String, Bool, Bool, Bool, Pkg.Operations.var"#130#134"{Bool, Cmd, Cmd, Nothing, Pkg.Types.Context, Vector{Tuple{String, Base.Process}}, String, Pkg.Types.PackageSpec}, Pkg.Types.PackageSpec})()
    @ Pkg.Operations /opt/hostedtoolcache/julia/1.9.4/x64/share/julia/stdlib/v1.9/Pkg/src/Operations.jl:1825
 [10] with_temp_env(fn::Pkg.Operations.var"#117#122"{String, Bool, Bool, Bool, Pkg.Operations.var"#130#134"{Bool, Cmd, Cmd, Nothing, Pkg.Types.Context, Vector{Tuple{String, Base.Process}}, String, Pkg.Types.PackageSpec}, Pkg.Types.PackageSpec}, temp_env::String)
    @ Pkg.Operations /opt/hostedtoolcache/julia/1.9.4/x64/share/julia/stdlib/v1.9/Pkg/src/Operations.jl:1706
 [11] (::Pkg.Operations.var"#115#120"{Dict{String, Any}, Bool, Bool, Bool, Pkg.Operations.var"#130#134"{Bool, Cmd, Cmd, Nothing, Pkg.Types.Context, Vector{Tuple{String, Base.Process}}, String, Pkg.Types.PackageSpec}, Pkg.Types.Context, Pkg.Types.PackageSpec, String, Nothing, String})(tmp::String)
    @ Pkg.Operations /opt/hostedtoolcache/julia/1.9.4/x64/share/julia/stdlib/v1.9/Pkg/src/Operations.jl:1795
 [12] mktempdir(fn::Pkg.Operations.var"#115#120"{Dict{String, Any}, Bool, Bool, Bool, Pkg.Operations.var"#130#134"{Bool, Cmd, Cmd, Nothing, Pkg.Types.Context, Vector{Tuple{String, Base.Process}}, String, Pkg.Types.PackageSpec}, Pkg.Types.Context, Pkg.Types.PackageSpec, String, Nothing, String}, parent::String; prefix::String)
    @ Base.Filesystem ./file.jl:762
 [13] mktempdir(fn::Function, parent::String)
    @ Base.Filesystem ./file.jl:758
 [14] mktempdir
    @ ./file.jl:758 [inlined]
 [15] sandbox(fn::Function, ctx::Pkg.Types.Context, target::Pkg.Types.PackageSpec, target_path::String, sandbox_path::String, sandbox_project_override::Nothing; preferences::Dict{String, Any}, force_latest_compatible_version::Bool, allow_earlier_backwards_compatible_versions::Bool, allow_reresolve::Bool)
    @ Pkg.Operations /opt/hostedtoolcache/julia/1.9.4/x64/share/julia/stdlib/v1.9/Pkg/src/Operations.jl:1753
 [16] test(ctx::Pkg.Types.Context, pkgs::Vector{Pkg.Types.PackageSpec}; coverage::Bool, julia_args::Cmd, test_args::Cmd, test_fn::Nothing, force_latest_compatible_version::Bool, allow_earlier_backwards_compatible_versions::Bool, allow_reresolve::Bool)
    @ Pkg.Operations /opt/hostedtoolcache/julia/1.9.4/x64/share/julia/stdlib/v1.9/Pkg/src/Operations.jl:1956
 [17] test
    @ /opt/hostedtoolcache/julia/1.9.4/x64/share/julia/stdlib/v1.9/Pkg/src/Operations.jl:1900 [inlined]
 [18] test(ctx::Pkg.Types.Context, pkgs::Vector{Pkg.Types.PackageSpec}; coverage::Bool, test_fn::Nothing, julia_args::Vector{String}, test_args::Cmd, force_latest_compatible_version::Bool, allow_earlier_backwards_compatible_versions::Bool, allow_reresolve::Bool, kwargs::Base.Pairs{Symbol, IOContext{Base.PipeEndpoint}, Tuple{Symbol}, NamedTuple{(:io,), Tuple{IOContext{Base.PipeEndpoint}}}})
    @ Pkg.API /opt/hostedtoolcache/julia/1.9.4/x64/share/julia/stdlib/v1.9/Pkg/src/API.jl:441
 [19] test(pkgs::Vector{Pkg.Types.PackageSpec}; io::IOContext{Base.PipeEndpoint}, kwargs::Base.Pairs{Symbol, Any, NTuple{4, Symbol}, NamedTuple{(:coverage, :julia_args, :force_latest_compatible_version, :allow_reresolve), Tuple{Bool, Vector{String}, Bool, Bool}}})
    @ Pkg.API /opt/hostedtoolcache/julia/1.9.4/x64/share/julia/stdlib/v1.9/Pkg/src/API.jl:156
 [20] test(; name::Nothing, uuid::Nothing, version::Nothing, url::Nothing, rev::Nothing, path::Nothing, mode::Pkg.Types.PackageMode, subdir::Nothing, kwargs::Base.Pairs{Symbol, Any, NTuple{4, Symbol}, NamedTuple{(:coverage, :julia_args, :force_latest_compatible_version, :allow_reresolve), Tuple{Bool, Vector{String}, Bool, Bool}}})
    @ Pkg.API /opt/hostedtoolcache/julia/1.9.4/x64/share/julia/stdlib/v1.9/Pkg/src/API.jl:171
 [21] top-level scope
    @ ~/work/_actions/julia-actions/julia-runtest/v1/test_harness.jl:44
 [22] include(fname::String)
    @ Base.MainInclude ./client.jl:478
 [23] top-level scope
    @ none:1
in expression starting at /home/runner/work/_actions/julia-actions/julia-runtest/v1/test_harness.jl:25
Error: Process completed with exit code 1.

```

I have even removed the `using PrecompileTools` and commented out the PRecompile.jl stuff, but I still have the error.. just to have `PrecompileTools = "1"` in my Project.toml file!  
What the hell could be ?

---

<div class="post-metadata">

**Author:** ![sylvaticus](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sylvaticus/32/203883_2.png) [@sylvaticus](https://discourse.julialang.org/u/sylvaticus)\
**Post date:** [April 24, 2025, 5:50pm UTC](https://discourse.julialang.org/t/weird-error-in-github-action-error-loaderror-keyerror-key-precompiletools-not-found/128377/2 "2025-04-24T17:50:38Z")

</div>

This is _really_ weird… I removed EVERYTHING of PrecompileTools, not in the Project.toml of my package, not in the main environment, nowhere… but on GitHub action or in local using Juilia 1.9 I get the error:

```julia
(@v1.9) pkg> activate .
  Activating project at `~/.julia/dev/DICEModel`

julia> import Pkg; Pkg.test(;coverage=true, julia_args=["--check-bounds=yes", "--compiled-modules=yes", "--depwarn=yes"], force_latest_compatible_version=false, allow_reresolve=true)
    Updating registry at `~/.julia/registries/General.toml`
    Updating `~/.julia/dev/DICEModel/Project.toml`
ERROR: KeyError: key "PrecompileTools" not found
Stacktrace:
  [1] getindex
    @ ./dict.jl:484 [inlined]
  [2] status_ext_info(pkg::Pkg.Types.PackageSpec, env::Pkg.Types.EnvCache)
    @ Pkg.Operations ~/lib/julia-1.9.4/share/julia/stdlib/v1.9/Pkg/src/Operations.jl:2214
  [3] print_status(env::Pkg.Types.EnvCache, old_env::Pkg.Types.EnvCache, registries::Vector{Pkg.Registry.RegistryInstance}, header::Symbol, uuids::Vector{Base.UUID}, names::Vector{String}; manifest::Bool, diff::Bool, ignore_indent::Bool, outdated::Bool, extensions::Bool, io::Base.TTY, mode::Pkg.Types.PackageMode, hidden_upgrades_info::Bool, show_usagetips::Bool)
    @ Pkg.Operations ~/lib/julia-1.9.4/share/julia/stdlib/v1.9/Pkg/src/Operations.jl:2299
  [4] print_status
    @ ~/lib/julia-1.9.4/share/julia/stdlib/v1.9/Pkg/src/Operations.jl:2241 [inlined]
  [5] status(env::Pkg.Types.EnvCache, registries::Vector{Pkg.Registry.RegistryInstance}, pkgs::Vector{Pkg.Types.PackageSpec}; header::Symbol, mode::Pkg.Types.PackageMode, git_diff::Bool, env_diff::Pkg.Types.EnvCache, ignore_indent::Bool, io::Base.TTY, outdated::Bool, extensions::Bool, hidden_upgrades_info::Bool, show_usagetips::Bool)
    @ Pkg.Operations ~/lib/julia-1.9.4/share/julia/stdlib/v1.9/Pkg/src/Operations.jl:2472
  [6] status (repeats 2 times)
    @ ~/lib/julia-1.9.4/share/julia/stdlib/v1.9/Pkg/src/Operations.jl:2443 [inlined]
  [7] #show_update#167
    @ ~/lib/julia-1.9.4/share/julia/stdlib/v1.9/Pkg/src/Operations.jl:2439 [inlined]
  [8] up(ctx::Pkg.Types.Context, pkgs::Vector{Pkg.Types.PackageSpec}, level::Pkg.Types.UpgradeLevel; skip_writing_project::Bool, preserve::Nothing)
    @ Pkg.Operations ~/lib/julia-1.9.4/share/julia/stdlib/v1.9/Pkg/src/Operations.jl:1546
  [9] up
    @ ~/lib/julia-1.9.4/share/julia/stdlib/v1.9/Pkg/src/Operations.jl:1521 [inlined]
 [10] up(ctx::Pkg.Types.Context, pkgs::Vector{Pkg.Types.PackageSpec}; level::Pkg.Types.UpgradeLevel, mode::Pkg.Types.PackageMode, preserve::Nothing, update_registry::Bool, skip_writing_project::Bool, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ Pkg.API ~/lib/julia-1.9.4/share/julia/stdlib/v1.9/Pkg/src/API.jl:348
 [11] up
    @ ~/lib/julia-1.9.4/share/julia/stdlib/v1.9/Pkg/src/API.jl:323 [inlined]
 [12] #up#48
    @ ~/lib/julia-1.9.4/share/julia/stdlib/v1.9/Pkg/src/API.jl:161 [inlined]
 [13] up
    @ ~/lib/julia-1.9.4/share/julia/stdlib/v1.9/Pkg/src/API.jl:161 [inlined]
 [14] instantiate(ctx::Pkg.Types.Context; manifest::Nothing, update_registry::Bool, verbose::Bool, platform::Base.BinaryPlatforms.Platform, allow_build::Bool, allow_autoprecomp::Bool, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ Pkg.API ~/lib/julia-1.9.4/share/julia/stdlib/v1.9/Pkg/src/API.jl:1715
 [15] instantiate
    @ ~/lib/julia-1.9.4/share/julia/stdlib/v1.9/Pkg/src/API.jl:1691 [inlined]
 [16] test(ctx::Pkg.Types.Context, pkgs::Vector{Pkg.Types.PackageSpec}; coverage::Bool, julia_args::Cmd, test_args::Cmd, test_fn::Nothing, force_latest_compatible_version::Bool, allow_earlier_backwards_compatible_versions::Bool, allow_reresolve::Bool)
    @ Pkg.Operations ~/lib/julia-1.9.4/share/julia/stdlib/v1.9/Pkg/src/Operations.jl:1906
 [17] test
    @ ~/lib/julia-1.9.4/share/julia/stdlib/v1.9/Pkg/src/Operations.jl:1900 [inlined]
 [18] test(ctx::Pkg.Types.Context, pkgs::Vector{Pkg.Types.PackageSpec}; coverage::Bool, test_fn::Nothing, julia_args::Vector{String}, test_args::Cmd, force_latest_compatible_version::Bool, allow_earlier_backwards_compatible_versions::Bool, allow_reresolve::Bool, kwargs::Base.Pairs{Symbol, Base.TTY, Tuple{Symbol}, NamedTuple{(:io,), Tuple{Base.TTY}}})
    @ Pkg.API ~/lib/julia-1.9.4/share/julia/stdlib/v1.9/Pkg/src/API.jl:441
 [19] test(pkgs::Vector{Pkg.Types.PackageSpec}; io::Base.TTY, kwargs::Base.Pairs{Symbol, Any, NTuple{4, Symbol}, NamedTuple{(:coverage, :julia_args, :force_latest_compatible_version, :allow_reresolve), Tuple{Bool, Vector{String}, Bool, Bool}}})
    @ Pkg.API ~/lib/julia-1.9.4/share/julia/stdlib/v1.9/Pkg/src/API.jl:156
 [20] test(; name::Nothing, uuid::Nothing, version::Nothing, url::Nothing, rev::Nothing, path::Nothing, mode::Pkg.Types.PackageMode, subdir::Nothing, kwargs::Base.Pairs{Symbol, Any, NTuple{4, Symbol}, NamedTuple{(:coverage, :julia_args, :force_latest_compatible_version, :allow_reresolve), Tuple{Bool, Vector{String}, Bool, Bool}}})
    @ Pkg.API ~/lib/julia-1.9.4/share/julia/stdlib/v1.9/Pkg/src/API.jl:171
 [21] top-level scope
    @ REPL[2]:1

```

Where julia is trying to get it from ???

---

<div class="post-metadata">

**Author:** ![sylvaticus](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sylvaticus/32/203883_2.png) [@sylvaticus](https://discourse.julialang.org/u/sylvaticus)\
**Post date:** [April 24, 2025, 6:20pm UTC](https://discourse.julialang.org/t/weird-error-in-github-action-error-loaderror-keyerror-key-precompiletools-not-found/128377/3 "2025-04-24T18:20:16Z")

</div>

Even MORE weird.. I reverted to a commit that was working, and now the CI action is still creating this problem…

---

<div class="post-metadata">

**Author:** ![sylvaticus](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sylvaticus/32/203883_2.png) [@sylvaticus](https://discourse.julialang.org/u/sylvaticus)\
**Post date:** [April 24, 2025, 6:23pm UTC](https://discourse.julialang.org/t/weird-error-in-github-action-error-loaderror-keyerror-key-precompiletools-not-found/128377/4 "2025-04-24T18:23:39Z")

</div>

ugh.. this must be related to Ipopt release 1.10, 13 hours ago:

> **[Release v1.10.0 · jump-dev/Ipopt.jl](https://github.com/jump-dev/Ipopt.jl/releases/tag/v1.10.0)**
>
> Ipopt v1.10.0
> Diff since v1.9.0
> Merged pull requests:
> 
> Move MathOptInterface to a package extension (#478) (@odow)
> Prep for v1.10.0 (#481) (@odow)

---

<div class="post-metadata">

**Author:** ![tamasgal](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamasgal/32/27946_2.png) [@tamasgal](https://discourse.julialang.org/u/tamasgal)\
**Post date:** [April 25, 2025, 8:07am UTC](https://discourse.julialang.org/t/weird-error-in-github-action-error-loaderror-keyerror-key-precompiletools-not-found/128377/5 "2025-04-25T08:07:01Z")

</div>

I have the same problem with my nightly build of a paper (on our self-hosted GitLab) which also uses Ipopt.jl. The error occurs at the `using Pkg; Pkg.instantiate()` step.

That’s in my `Project.toml` btw (KM3io.jl and NeRCA.jl are internal packages):

```toml
[compat]
KM3io = "^0.16"
NeRCA = "^0.13.8"
julia = "1"
CSV = "^0.10.13"
CairoMakie = "^0.11.9, ^0.12"
Colors = "^0.12.10"
DataFrames = "^1.6.1"
DataStructures = "^0.18.18"
Distributions = "^0.25.107"
DocOpt = "^0.5.0"
DrWatson = "^2.14.1"
FHist = "^0.11"
HDF5 = "^0.17.1"
Healpix = "^4.2.1"
IntervalArithmetic = "^0.22.8"
Ipopt = "^1.6.2"
JSON = "^0.21.4"
JuMP = "^1.20.0"
LaTeXStrings = "^1.3.1"
LandauDistribution = "^0.2.2"
LsqFit = "^0.15.0"
Optim = "^1.9.2"
PGFPlotsX = "^1.6.1"
PackageCompiler = "^2.1.17"
Parameters = "^0.12.3"
Plots = "^1.40.2"
PrettyTables = "^2.3.1"
ProgressMeter = "^1.10.0"
Query = "^1.0.0"
Rotations = "^1.7.0"
Setfield = "^1.1.1"
StatsBase = "^0.34.2"
Tables = "^1.11.1"
UnROOT = "^0.10.24"
UnicodePlots = "^3.6.4"
Statistics = "^1.10.0"

```

---

<div class="post-metadata">

**Author:** ![sylvaticus](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sylvaticus/32/203883_2.png) [@sylvaticus](https://discourse.julialang.org/u/sylvaticus)\
**Post date:** [April 25, 2025, 8:10am UTC](https://discourse.julialang.org/t/weird-error-in-github-action-error-loaderror-keyerror-key-precompiletools-not-found/128377/6 "2025-04-25T08:10:11Z")

</div>

How do I check with dependency of my package (direct or indirect) has a release date less than 48h ago?

I has been affected by the issue with Ipopt.jl but they [seem to have corrected it](https://github.com/jump-dev/Ipopt.jl/issues/482), but I still have this issue in Julia 1.10 (Julia 1.11 is now fine) using [Ipopt v1.10.1](https://github.com/jump-dev/Ipopt.jl/issues/485) .. I want to check if there are other packages that have been released in the latest 48 hours, as CI actions now fails on commits that were previously working…

---

<div class="post-metadata">

**Author:** ![sylvaticus](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sylvaticus/32/203883_2.png) [@sylvaticus](https://discourse.julialang.org/u/sylvaticus)\
**Post date:** [April 25, 2025, 8:23am UTC](https://discourse.julialang.org/t/weird-error-in-github-action-error-loaderror-keyerror-key-precompiletools-not-found/128377/7 "2025-04-25T08:23:32Z")

</div>

Which version of Julia are you using? Does your paper install Ipopt v1.10.0 ?

---

<div class="post-metadata">

**Author:** ![tamasgal](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamasgal/32/27946_2.png) [@tamasgal](https://discourse.julialang.org/u/tamasgal)\
**Post date:** [April 25, 2025, 8:26am UTC](https://discourse.julialang.org/t/weird-error-in-github-action-error-loaderror-keyerror-key-precompiletools-not-found/128377/8 "2025-04-25T08:26:39Z")

</div>

Julia 1.10. The nightly installed Ipopt 1.10.1 last night and since then the CI is failing. The pipeline before used Ipopt 1.9.0 which worked fine.

I also commented on [Still issues with Precompilation in 1.10.1 (Julia 1.10) · Issue #485 · jump-dev/Ipopt.jl · GitHub](https://github.com/jump-dev/Ipopt.jl/issues/485)
