# Conflict with packages DifferentialEquation.jl, DynamicalSystems.jl, CairoMakie,jld

**URL:** <https://discourse.julialang.org/t/conflict-with-packages-differentialequation-jl-dynamicalsystems-jl-cairomakie-jld/96020>\
**Category:** Package Management\
**Tags:** makie, differentialequation, dynamical-systems\
**Created:** [March 13, 2023, 6:18pm UTC](https://discourse.julialang.org/t/conflict-with-packages-differentialequation-jl-dynamicalsystems-jl-cairomakie-jld/96020 "2023-03-13T18:18:20Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Sergey\_Novak](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sergey_novak/32/37716_2.png) [@Sergey\_Novak](https://discourse.julialang.org/u/Sergey_Novak)\
**Post date:** [March 13, 2023, 6:18pm UTC](https://discourse.julialang.org/t/conflict-with-packages-differentialequation-jl-dynamicalsystems-jl-cairomakie-jld/96020/1 "2023-03-13T18:18:20Z")

</div>

Hello! I have updated the DynamicalSystems.jl package to the latest version, and the CaroMakie.jl and DifferentialEquations.jl packages have reverted to an earlier version. For what reason could this have occurred?  
In addition, the CairoMakie has broken down a bit and now the `scatter!` does not work, giving an error.

```julia
`Makie.convert_arguments` for the plot type Scatter{Tuple{Int64, Int64, Int64}} and its conversion trait PointBased() was unsuccessful.

The signature that could not be converted was:
::Int64, ::Int64, ::Int64

Makie needs to convert all plot input arguments to types that can be consumed by the backends (typically Arrays with Float32 elements).
You can define a method for `Makie.convert_arguments` (a type recipe) for these types or their supertypes to make this set of arguments convertible (See http://makie.juliaplots.org/stable/recipes.html).

Alternatively, you can define `Makie.convert_single_argument` for single arguments which have types that are unknown to Makie but which can be converted to known types and fed back to the conversion pipeline.

```

UPD: The DynamicalSystems package update was done automatically when I added the BifurcationKit 🙂

---

<div class="post-metadata">

**Author:** ![Sergey\_Novak](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sergey_novak/32/37716_2.png) [@Sergey\_Novak](https://discourse.julialang.org/u/Sergey_Novak)\
**Post date:** [March 14, 2023, 5:27am UTC](https://discourse.julialang.org/t/conflict-with-packages-differentialequation-jl-dynamicalsystems-jl-cairomakie-jld/96020/2 "2023-03-14T05:27:17Z")

</div>

I was able to fix the errors in CairoMake, but I had to remove the BifurcationKit. I wonder why this package causes errors in CairoMakie

---

<div class="post-metadata">

**Author:** ![rveltz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rveltz/32/2707_2.png) [@rveltz](https://discourse.julialang.org/u/rveltz)\
**Post date:** [March 14, 2023, 6:15am UTC](https://discourse.julialang.org/t/conflict-with-packages-differentialequation-jl-dynamicalsystems-jl-cairomakie-jld/96020/3 "2023-03-14T06:15:20Z")

</div>

To know that, try adding BifurcationKit and see the error message. I am surprised too

---

<div class="post-metadata">

**Author:** ![Sergey\_Novak](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sergey_novak/32/37716_2.png) [@Sergey\_Novak](https://discourse.julialang.org/u/Sergey_Novak)\
**Post date:** [March 14, 2023, 6:42am UTC](https://discourse.julialang.org/t/conflict-with-packages-differentialequation-jl-dynamicalsystems-jl-cairomakie-jld/96020/4 "2023-03-14T06:42:13Z")

</div>

For example my packages have last version without BifurcationKit  
 ![image](https://global.discourse-cdn.com/julialang/original/3X/c/4/c4df40d9eafb6a3a7fba8dde30a8019188dc3903.png)  
and CairoMakie is work.  
And know i add BifurcationKit  
 ![image](https://global.discourse-cdn.com/julialang/original/3X/8/a/8a51124de858b8a7062bdd38245060f0799c675d.png)

UPD:  
Error CairoMakie, BifurcationKit not using in code

```julia
`Makie.convert_arguments` for the plot type Scatter{Tuple{Float64, Float64, Float64}} and its conversion trait PointBased() was unsuccessful.

The signature that could not be converted was:
::Float64, ::Float64, ::Float64

Makie needs to convert all plot input arguments to types that can be consumed by the backends (typically Arrays with Float32 elements).
You can define a method for `Makie.convert_arguments` (a type recipe) for these types or their supertypes to make this set of arguments convertible (See http://makie.juliaplots.org/stable/recipes.html).

Alternatively, you can define `Makie.convert_single_argument` for single arguments which have types that are unknown to Makie but which can be converted to known types and fed back to the conversion pipeline.

Stacktrace:
  [1] error(s::String)
    @ Base .\error.jl:35
  [2] convert_arguments(::Type{Scatter{Tuple{Float64, Float64, Float64}}}, ::Float64, ::Vararg{Float64}; kw::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ Makie C:\Users\Alex\.julia\packages\Makie\NL7Xw\src\conversions.jl:17
  [3] convert_arguments(::Type{Scatter{Tuple{Float64, Float64, Float64}}}, ::Float64, ::Float64, ::Float64)
    @ Makie C:\Users\Alex\.julia\packages\Makie\NL7Xw\src\conversions.jl:7
  [4] plot!(::Scene, ::Type{Scatter}, ::Attributes, ::Float64, ::Vararg{Float64}; kw_attributes::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ Makie C:\Users\Alex\.julia\packages\Makie\NL7Xw\src\interfaces.jl:321
  [5] plot!(::Scene, ::Type{Scatter}, ::Attributes, ::Float64, ::Float64, ::Float64)
    @ Makie C:\Users\Alex\.julia\packages\Makie\NL7Xw\src\interfaces.jl:307
  [6] plot!(::Axis3, ::Type{Scatter}, ::Attributes, ::Float64, ::Vararg{Float64}; kw_attributes::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ Makie.MakieLayout C:\Users\Alex\.julia\packages\Makie\NL7Xw\src\makielayout\layoutables\axis3d.jl:276
  [7] plot!(::Axis3, ::Type{Scatter}, ::Attributes, ::Float64, ::Float64, ::Float64)
    @ Makie.MakieLayout C:\Users\Alex\.julia\packages\Makie\NL7Xw\src\makielayout\layoutables\axis3d.jl:266
  [8] plot!(::Type{Scatter}, ::Axis3, ::Float64, ::Vararg{Float64}; kw_attributes::Base.Pairs{Symbol, Any, Tuple{Symbol, Symbol}, NamedTuple{(:markersize, :color), Tuple{Int64, Symbol}}})
    @ Makie.MakieLayout C:\Users\Alex\.julia\packages\Makie\NL7Xw\src\makielayout\layoutables\axis3d.jl:284
  [9] plot!(::Type{Scatter}, ::Float64, ::Vararg{Float64}; kw_attributes::Base.Pairs{Symbol, Any, Tuple{Symbol, Symbol}, NamedTuple{(:markersize, :color), Tuple{Int64, Symbol}}})
    @ Makie C:\Users\Alex\.julia\packages\Makie\NL7Xw\src\figureplotting.jl:47
 [10] scatter!(::Float64, ::Vararg{Float64}; attributes::Base.Pairs{Symbol, Any, Tuple{Symbol, Symbol}, NamedTuple{(:markersize, :color), Tuple{Int64, Symbol}}})
    @ MakieCore C:\Users\Alex\.julia\packages\MakieCore\S8PkO\src\recipes.jl:35
 [11] top-level scope
    @ In[12]:14

```

---

<div class="post-metadata">

**Author:** ![SteffenPL](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/steffenpl/32/206270_2.png) [@SteffenPL](https://discourse.julialang.org/u/SteffenPL)\
**Post date:** [March 14, 2023, 7:33am UTC](https://discourse.julialang.org/t/conflict-with-packages-differentialequation-jl-dynamicalsystems-jl-cairomakie-jld/96020/5 "2023-03-14T07:33:33Z")

</div>

You can maybe run `status --outdated` in Pkg mode, to see what is blocking the update.  
(See [Julia 1.8 Highlights](https://julialang.org/blog/2022/08/julia-1.8-highlights/#pkg_status_update_with_upgradable_package_indicator))

Also, trying to `add CairoMakie@v0.10` might show you in more details what is blocking an update.

---

<div class="post-metadata">

**Author:** ![Sergey\_Novak](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sergey_novak/32/37716_2.png) [@Sergey\_Novak](https://discourse.julialang.org/u/Sergey_Novak)\
**Post date:** [March 14, 2023, 7:47am UTC](https://discourse.julialang.org/t/conflict-with-packages-differentialequation-jl-dynamicalsystems-jl-cairomakie-jld/96020/6 "2023-03-14T07:47:03Z")

</div>

Thank you!  
It is output for CairoMakie

 ![image](https://global.discourse-cdn.com/julialang/original/3X/4/b/4be0122d90c8798c69b8f6a9bea41b4dae359790.png)

DifferentialEquations

 ![image](https://global.discourse-cdn.com/julialang/original/3X/5/2/525a3eaab3f1346b48b00dd691ccaafe183caa62.png)  
 ![image](https://global.discourse-cdn.com/julialang/original/3X/3/0/309e734ae83fd98e99a8918ba33090aac3721892.png)

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [March 14, 2023, 10:22am UTC](https://discourse.julialang.org/t/conflict-with-packages-differentialequation-jl-dynamicalsystems-jl-cairomakie-jld/96020/7 "2023-03-14T10:22:54Z")

</div>

Don’t dump all your packages into the default environment, work with package specific environments instead. See eg

> [@A guide: How to handle "ERROR: Unsatisfiable requirements detected ..."](https://discourse.julialang.org/t/a-guide-how-to-handle-error-unsatisfiable-requirements-detected/43406):
>
> Approximately once or twice a week (based on my feelings, not actual stats), I see a post asking about error: How to handle “ERROR: Unsatisfiable requirements detected …” It’s so common that I think it’s time for a systematic break-down of the issue. After reading this, you should be able to understand why this happens? and how to handle it. Deciding a package version Typically, a Julia package exists in multiple semver version. E.g. 0.1, 0.2, 0.3 etc. In general, when installing a package, …

or mt SO answer here on how to read the Pkg resolver output and workarounds:

> <https://stackoverflow.com/questions/73054419/julia-unsatisfiable-requirements-detected-for-package-error-when-installing-mu>

---

<div class="post-metadata">

**Author:** ![Sergey\_Novak](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sergey_novak/32/37716_2.png) [@Sergey\_Novak](https://discourse.julialang.org/u/Sergey_Novak)\
**Post date:** [March 14, 2023, 3:59pm UTC](https://discourse.julialang.org/t/conflict-with-packages-differentialequation-jl-dynamicalsystems-jl-cairomakie-jld/96020/8 "2023-03-14T15:59:11Z")

</div>

Thank you!  
Multiple environments are inconvenient to use because of the long compilation of packages. Is it possible to compile all packages once?

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [March 14, 2023, 4:01pm UTC](https://discourse.julialang.org/t/conflict-with-packages-differentialequation-jl-dynamicalsystems-jl-cairomakie-jld/96020/9 "2023-03-14T16:01:56Z")

</div>

Compilation is once per environment. As you see putting all packages into one environment means you’ll likely run into compat issues, so I guess you need to decide what’s more convenient.

Also, having all packages in your default environment means that potentially lots of unrelated packages have to recompile when you add some package because some transitory dependency changed.

---

<div class="post-metadata">

**Author:** ![Sergey\_Novak](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sergey_novak/32/37716_2.png) [@Sergey\_Novak](https://discourse.julialang.org/u/Sergey_Novak)\
**Post date:** [March 14, 2023, 4:04pm UTC](https://discourse.julialang.org/t/conflict-with-packages-differentialequation-jl-dynamicalsystems-jl-cairomakie-jld/96020/10 "2023-03-14T16:04:53Z")

</div>

I mean compilation when I call the package i.e `using "CairoMakie"`

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [March 14, 2023, 4:11pm UTC](https://discourse.julialang.org/t/conflict-with-packages-differentialequation-jl-dynamicalsystems-jl-cairomakie-jld/96020/11 "2023-03-14T16:11:06Z")

</div>

Packages are automatically precompiled when you install them into an environment. There is some additional compilation happening when you do `using Package` as well as when you first call some method from the package (“TTFX”, greatly reduced for many applications in the upcoming Julia 1.9).

All of this happens both in the default environment and in some separate project environment. The potential downside is that when you have one environment with say `CairoMakie, DataFrames` and one with `CairoMakie, CSV` you’ll precompile `CairoMakie` twice, while one environment with `CairoMakie, DataFrames` to which you then add `CSV` might only precompile once.

In any event the precompilation of a new environment should be on the order of 1 minute (unless you have a weak machine, especially single core) so it shouldn’t be a prohibitive cost.

---

<div class="post-metadata">

**Author:** ![Sergey\_Novak](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sergey_novak/32/37716_2.png) [@Sergey\_Novak](https://discourse.julialang.org/u/Sergey_Novak)\
**Post date:** [March 14, 2023, 4:24pm UTC](https://discourse.julialang.org/t/conflict-with-packages-differentialequation-jl-dynamicalsystems-jl-cairomakie-jld/96020/12 "2023-03-14T16:24:41Z")

</div>

I have good machine and when i using

```julia
using StaticArrays, DifferentialEquations, DynamicalSystems, JLD, CairoMakie

```

Time running this code is ~2 min

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [March 14, 2023, 4:29pm UTC](https://discourse.julialang.org/t/conflict-with-packages-differentialequation-jl-dynamicalsystems-jl-cairomakie-jld/96020/13 "2023-03-14T16:29:00Z")

</div>

But again this has nothing to do with the environment you are using - `using` time is completely unaffected by this. I have been talking about **precompilation** which happens once per environment (change to an environment’s Project file). `using` cost is incurred once per session, which is a very different proposition.

If you are worried about this you should look into sysimages (maybe that’s what you meant by “compiling all packages once”?).

In any envent this is mostly unrelated the original topic of your thread which is version conflicts to which my answer remains: use a fresh environment with only the packages you need to minimize version conflicts.

---

<div class="post-metadata">

**Author:** ![Sergey\_Novak](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sergey_novak/32/37716_2.png) [@Sergey\_Novak](https://discourse.julialang.org/u/Sergey_Novak)\
**Post date:** [March 14, 2023, 4:36pm UTC](https://discourse.julialang.org/t/conflict-with-packages-differentialequation-jl-dynamicalsystems-jl-cairomakie-jld/96020/14 "2023-03-14T16:36:07Z")

</div>

Yes, that’s what I meant  
If I count something using one environment and then I want to plot a graph with a package that is in another environment then calculate something again in the previous environment, do I need to constantly switch between them?

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [March 14, 2023, 4:37pm UTC](https://discourse.julialang.org/t/conflict-with-packages-differentialequation-jl-dynamicalsystems-jl-cairomakie-jld/96020/15 "2023-03-14T16:37:50Z")

</div>

Generally people have one environment per project, which includes whatever packages they need for the specific analysis/task at hand (e.g. `Counting, Plots` in your case)

---

<div class="post-metadata">

**Author:** ![Sergey\_Novak](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sergey_novak/32/37716_2.png) [@Sergey\_Novak](https://discourse.julialang.org/u/Sergey_Novak)\
**Post date:** [March 14, 2023, 4:44pm UTC](https://discourse.julialang.org/t/conflict-with-packages-differentialequation-jl-dynamicalsystems-jl-cairomakie-jld/96020/16 "2023-03-14T16:44:03Z")

</div>

In my case, using plotting and calculation together is not possible, because one package causes errors in the other. Apparently i will have to use two environments or use Plots instead of CairoMakie  
Thank you

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [March 14, 2023, 4:50pm UTC](https://discourse.julialang.org/t/conflict-with-packages-differentialequation-jl-dynamicalsystems-jl-cairomakie-jld/96020/17 "2023-03-14T16:50:13Z")

</div>

Are you sure?

```julia
(@v1.9) pkg> activate --temp
  Activating new project at `AppData\Local\Temp\jl_P6XWmj`

(jl_P6XWmj) pkg> add StaticArrays, DifferentialEquations, DynamicalSystems, JLD, CairoMakie
    Updating `AppData\Local\Temp\jl_P6XWmj\Project.toml`
  [13f3f980] + CairoMakie v0.10.2
  [0c46a032] + DifferentialEquations v7.7.0
  [61744808] + DynamicalSystems v3.0.0
  [4138dd39] + JLD v0.13.3
  [90137ffa] + StaticArrays v1.5.17

```

seems to work just fine for me, with everything at the latest version.

---

<div class="post-metadata">

**Author:** ![Sergey\_Novak](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sergey_novak/32/37716_2.png) [@Sergey\_Novak](https://discourse.julialang.org/u/Sergey_Novak)\
**Post date:** [March 14, 2023, 4:53pm UTC](https://discourse.julialang.org/t/conflict-with-packages-differentialequation-jl-dynamicalsystems-jl-cairomakie-jld/96020/18 "2023-03-14T16:53:23Z")

</div>

I meant CairoMakie and BifurcationKit. CairoMakie throws an error when I try to plot

---

<div class="post-metadata">

**Author:** ![aramirezreyes](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aramirezreyes/32/42573_2.png) [@aramirezreyes](https://discourse.julialang.org/u/aramirezreyes)\
**Post date:** [March 14, 2023, 4:55pm UTC](https://discourse.julialang.org/t/conflict-with-packages-differentialequation-jl-dynamicalsystems-jl-cairomakie-jld/96020/19 "2023-03-14T16:55:08Z")

</div>

~What was the call that failed with CairoMakie? Can you share the call and the types of the arguments?~

Edit: nevermind, it is pulling a super old call to CairoMakie

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [March 14, 2023, 5:04pm UTC](https://discourse.julialang.org/t/conflict-with-packages-differentialequation-jl-dynamicalsystems-jl-cairomakie-jld/96020/20 "2023-03-14T17:04:19Z")

</div>

Indeed `BifurcationKit` restricts `CairoMakie` to version 0.6, so you’ll either have to adapt your usage of `CairoMakie` to the API from that version (i.e. read the docs from back then) or indeed move to `Plots` (which seems useful in any case as `BifurcationKit` has recipes for `Plots`?)

[Next page](https://discourse.julialang.org/t/conflict-with-packages-differentialequation-jl-dynamicalsystems-jl-cairomakie-jld/96020.md?page=2)
