JuliaClimate / ClimateTools.jl

Climate science package for Julia
https://juliaclimate.github.io/ClimateTools.jl/stable/
Other
116 stars 18 forks source link

ClimateTools adjusts the dependecies versions of installed packages, causing other packages to precompile incorrectly. #233

Closed dk-zen closed 1 year ago

dk-zen commented 1 year ago

ClimateTools adjusts the dependecies versions of installed packages, causing other packages to precompile incorrectly. For example, ClimateTools would drop the version of the StatsBase package from 0.33.21 to 0.32.2, while pairwise! was only added at 0.33.8. This causes the problem of not finding the pairwise! function. It also caused errors in the pre-compilation of the Plots package. What is the solution?

`julia> using StatsBase help?> pairwise! search:

Couldn't find pairwise! Perhaps you meant pairs No documentation found.

Binding pairwise! does not exist.`

julia> using Plots [ Info: Precompiling Plots [91a5bcdd-55d7-5caf-9e0b-520d859cae80] ERROR: LoadError: MethodError: no method matching floatrange(::Type{Float64}, ::Int64, ::Int64, ::Float64, ::Int64) Closest candidates are: floatrange(::Type{T}, ::Integer, ::Integer, ::Integer, ::Integer) where T at C:\Users\Administrator\AppData\Local\Programs\Julia-1.7.1\share\julia\base\twiceprecision.jl:370 floatrange(::AbstractFloat, ::AbstractFloat, ::Real, ::AbstractFloat) at C:\Users\Administrator\AppData\Local\Programs\Julia-1.7.1\share\julia\base\twiceprecision.jl:384 Stacktrace: [1] floatrange(a::Float64, st::Float64, len::Float64, divisor::Float64) @ Base .\twiceprecision.jl:392 [2] histrange(lo::Float64, hi::Float64, n::Int64, closed::Symbol) @ StatsBase C:\Users\Administrator\.julia\packages\StatsBase\548SN\src\hist.jl:99 [3] histrange(v::Vector{Float64}, n::Int64, closed::Symbol) @ StatsBase C:\Users\Administrator\.julia\packages\StatsBase\548SN\src\hist.jl:39 [4] _hist_edge @ C:\Users\Administrator\.julia\packages\Plots\CUQan\src\recipes.jl:798 [inlined] [5] #212 @ C:\Users\Administrator\.julia\packages\Plots\CUQan\src\recipes.jl:811 [inlined] [6] map @ .\tuple.jl:222 [inlined] [7] _hist_edges @ C:\Users\Administrator\.julia\packages\Plots\CUQan\src\recipes.jl:811 [inlined] [8] _make_hist(vs::Tuple{Vector{Float64}, Vector{Float64}}, binning::Int64; normed::Bool, weights::Nothing) @ Plots C:\Users\Administrator\.julia\packages\Plots\CUQan\src\recipes.jl:830 [9] macro expansion @ C:\Users\Administrator\.julia\packages\Plots\CUQan\src\recipes.jl:952 [inlined] [10] apply_recipe(plotattributes::AbstractDict{Symbol, Any}, #unused#::Type{Val{:histogram2d}}, x::Any, y::Any, z::Any) @ Plots C:\Users\Administrator\.julia\packages\RecipesBase\z10lo\src\RecipesBase.jl:300 [11] _process_seriesrecipe(plt::Any, plotattributes::Any) @ RecipesPipeline C:\Users\Administrator\.julia\packages\RecipesPipeline\XxUHt\src\series_recipe.jl:50 [12] _process_seriesrecipes!(plt::Any, kw_list::Any) @ RecipesPipeline C:\Users\Administrator\.julia\packages\RecipesPipeline\XxUHt\src\series_recipe.jl:27 [13] recipe_pipeline!(plt::Any, plotattributes::Any, args::Any) @ RecipesPipeline C:\Users\Administrator\.julia\packages\RecipesPipeline\XxUHt\src\RecipesPipeline.jl:99 [14] _plot!(plt::Plots.Plot, plotattributes::Any, args::Any) @ Plots C:\Users\Administrator\.julia\packages\Plots\CUQan\src\plot.jl:232 [15] #plot#152 @ C:\Users\Administrator\.julia\packages\Plots\CUQan\src\plot.jl:107 [inlined] [16] #histogram2d#477 @ C:\Users\Administrator\.julia\packages\RecipesBase\z10lo\src\RecipesBase.jl:427 [inlined] [17] var"##10#282"() @ Plots C:\Users\Administrator\.julia\packages\Plots\CUQan\src\precompilation.jl:15 [18] top-level scope @ C:\Users\Administrator\.julia\packages\Plots\CUQan\src\precompilation.jl:25 [19] eval @ .\boot.jl:373 [inlined] [20] eval @ C:\Users\Administrator\.julia\packages\Plots\CUQan\src\Plots.jl:1 [inlined] [21] _broadcast_getindex_evalf @ .\broadcast.jl:670 [inlined] [22] _broadcast_getindex @ .\broadcast.jl:643 [inlined] [23] getindex @ .\broadcast.jl:597 [inlined] [24] copyto_nonleaf!(dest::Vector{Nothing}, bc::Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1}, Tuple{Base.OneTo{Int64}}, typeof(Plots.eval), Tuple{Base.Broadcast.Extruded{Vector{Expr}, Tuple{Bool}, Tuple{Int64}}}}, iter::Base.OneTo{Int64}, state::Int64, count::Int64) @ Base.Broadcast .\broadcast.jl:1055 [25] copy(bc::Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1}, Tuple{Base.OneTo{Int64}}, typeof(Plots.eval), Tuple{Vector{Expr}}}) @ Base.Broadcast .\broadcast.jl:907 [26] materialize @ .\broadcast.jl:860 [inlined] [27] macro expansion @ C:\Users\Administrator\.julia\packages\Plots\CUQan\src\precompilation.jl:32 [inlined] [28] macro expansion @ C:\Users\Administrator\.julia\packages\SnoopPrecompile\1XXT1\src\SnoopPrecompile.jl:69 [inlined] [29] (::Plots.var"#589#590")() @ Plots C:\Users\Administrator\.julia\packages\Plots\CUQan\src\precompilation.jl:29 [30] withenv(f::Plots.var"#589#590", keyvals::Pair{String, String}) @ Base .\env.jl:172 [31] macro expansion @ C:\Users\Administrator\.julia\packages\Plots\CUQan\src\precompilation.jl:28 [inlined] [32] macro expansion @ C:\Users\Administrator\.julia\packages\SnoopPrecompile\1XXT1\src\SnoopPrecompile.jl:119 [inlined] [33] top-level scope @ C:\Users\Administrator\.julia\packages\Plots\CUQan\src\precompilation.jl:4 [34] include(mod::Module, _path::String) @ Base .\Base.jl:418 [35] include(x::String) @ Plots C:\Users\Administrator\.julia\packages\Plots\CUQan\src\Plots.jl:1 [36] top-level scope @ C:\Users\Administrator\.julia\packages\Plots\CUQan\src\Plots.jl:204 [37] include @ .\Base.jl:418 [inlined] [38] 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:1318 [39] top-level scope @ none:1 [40] eval @ .\boot.jl:373 [inlined] [41] eval(x::Expr) @ Base.MainInclude .\client.jl:453 [42] top-level scope @ none:1 in expression starting at C:\Users\Administrator\.julia\packages\Plots\CUQan\src\precompilation.jl:3 in expression starting at C:\Users\Administrator\.julia\packages\Plots\CUQan\src\Plots.jl:1 ERROR: Failed to precompile Plots [91a5bcdd-55d7-5caf-9e0b-520d859cae80] to C:\Users\Administrator\.julia\compiled\v1.7\Plots\jl_AB42.tmp. Stacktrace: [1] error(s::String) @ Base .\error.jl:33 [2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, ignore_loaded_modules::Bool) @ Base .\loading.jl:1466 [3] compilecache(pkg::Base.PkgId, path::String) @ Base .\loading.jl:1410 [4] _require(pkg::Base.PkgId) @ Base .\loading.jl:1120 [5] require(uuidkey::Base.PkgId) @ Base .\loading.jl:1013 [6] require(into::Module, mod::Symbol) @ Base .\loading.jl:997 My julia environment: ` julia> versioninfo versioninfo (generic function with 2 methods)

julia> versioninfo() Julia Version 1.7.1 Commit ac5cc99908 (2021-12-22 19:35 UTC) Platform Info: OS: Windows (x86_64-w64-mingw32) CPU: Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-12.0.1 (ORCJIT, skylake) Environment: JULIA_PKG_SERVER = https://mirrors.bfsu.edu.cn/julia/static `

Balinus commented 1 year ago

Thanks for the report. I'm currently working to clean up the dependencies. However, I am waiting for a paper submission to be accepted before I do so. So, it might take 3-4 weeks before a new version is published.

Did you try installing ClimateTools in a new environment or was it inside the global Julia env?

dk-zen commented 1 year ago

Thanks for the report. I'm currently working to clean up the dependencies. However, I am waiting for a paper submission to be accepted before I do so. So, it might take 3-4 weeks before a new version is published.

Did you try installing ClimateTools in a new environment or was it inside the global Julia env?

Thanks! My current solution is that I created a new environment to install ClimateTools package, calling Plots package in the global environment. So far it works fine.

Balinus commented 1 year ago

Great! I will publish asap a new version that will be up-to-date with current Julia ecosystem. Thanks for your patience 😄

Balinus commented 1 year ago

The latest version v.0.24 should fixes dependencies problems. They all have been updated and modifications have been done accordingly. Cheers!