How do I find which packages are preventing DataFrames.jl from updating?

The package DataFrames.jl is stuck in version v1.3.6 in my environment. I looked at Manifest.jl and deleted all the packages I could that were dependencies. Then I tried to update DataFrames.jl and still it did not update.

How can I find which packages are preventing DataFrames.jl from updating, and what should I do to perform the update?

In the package mode of the REPL, you can use the command st --outdated to get information about which package(s) is blocking the upgrade. I’m not sure about your setup, but I recommend using project specific environments to minimize version conflicts in large global environments.

1 Like

I had tried this but all I got was:

⌃ [a93c6f00] DataFrames v1.3.6 (<v1.6.1)
⌅ [a1bb12fb] Electron v3.1.2 (<v5.0.0): DataVoyager, ElectronDisplay
⌃ [28b8d3ca] GR v0.72.8 (<v0.72.10)
⌃ [bdcacae8] LoopVectorization v0.12.150 (<v0.12.165)
⌃ [add582a8] MLJ v0.19.5 (<v0.20.0)
⌅ [2913bbd2] StatsBase v0.33.21 (<v0.34.2): ScikitLearn
⌅ [d2c73de3] GR_jll v0.72.8+0 (<v0.72.10+0): GR

It does not specify which packages are preventing DataFrames.jl from updating. Or at least I believe so.

The arrow up seems to indicate that DataFrames is not blocked: ⌃ [a93c6f00] DataFrames v1.3.6 (<v1.6.1)

What happens if you try update DataFrames?

Nothing happens. It continues in version v1.3.6.

@Soldalma Could you post the relevant parts of your Project.toml to see if we can replicate what’s happening to you?

I reproduced the environment given the package versions above with

(dataframes) pkg> add Electron@3.1.2, DataFrames@1.3.6, GR@0.72.8, LoopVectorization@0.12.150, MLJ@0.19.5, StatsBase@0.33.21
...
...
...
(dataframes) pkg> st
Status `~/tmp/dataframes/Project.toml`
⌃ [a93c6f00] DataFrames v1.3.6
⌃ [a1bb12fb] Electron v3.1.2
⌃ [28b8d3ca] GR v0.72.8
⌃ [bdcacae8] LoopVectorization v0.12.150
⌃ [add582a8] MLJ v0.19.5
⌃ [2913bbd2] StatsBase v0.33.21
Info Packages marked with ⌃ have new versions available and may be upgradable.

Updating DataFrames works fine with up --preserve=direct DataFrames

(dataframes) pkg> up --preserve=direct DataFrames
    Updating registry at `~/.julia/registries/KM3NeT`
    Updating git-repo `git@git.km3net.de:common/julia-registry.git`
    Updating registry at `~/.julia/registries/General.toml`
    Updating `~/tmp/dataframes/Project.toml`
  [a93c6f00] ↑ DataFrames v1.3.6 ⇒ v1.6.1
    Updating `~/tmp/dataframes/Manifest.toml`
  [a93c6f00] ↑ DataFrames v1.3.6 ⇒ v1.6.1
  [59287772] - Formatting v0.4.2
  [842dd82b] + InlineStrings v1.4.0
  [b964fa9f] + LaTeXStrings v1.3.0
  [08abe8d2] ↑ PrettyTables v1.3.1 ⇒ v2.2.7
  [91c51154] + SentinelArrays v1.4.0
  [892a3eda] + StringManipulation v0.3.4
Precompiling project...
  9 dependencies successfully precompiled in 19 seconds. 198 already precompiled.

(dataframes) pkg> st
Status `~/tmp/dataframes/Project.toml`
  [a93c6f00] DataFrames v1.6.1
⌃ [a1bb12fb] Electron v3.1.2
⌃ [28b8d3ca] GR v0.72.8
⌃ [bdcacae8] LoopVectorization v0.12.150
⌃ [add582a8] MLJ v0.19.5
⌃ [2913bbd2] StatsBase v0.33.21
Info Packages marked with ⌃ have new versions available and may be upgradable.

If you try to add DataFrames@1.6.1 directly, it should tell you more. If you need more help, the output of your status would be beneficial as @g-gundam already pointed out :wink:

4 Likes

I would always use a local project and not the global environment. You can create a local project environment with:

mkdir MyProject
cd MyProject
julia --project="."
]
add <all the packages this project needs>

The next time you launch Julia just use julia --project to launch it.

This usually avoids these kind of issues.

See also: Working with Julia projects | Julia programming notes

4 Likes

Try ] status --outdated --manifest to include all dependencies.

You can also try forcing a more recent version, e.g

] add --preserve=direct DataFrames@1.6

which should result in an error message that tells you about the conflict. Careful though, the dependency solver might find a solution by downgrading some non-direct dependencies (those which you haven’t added specifically to the project).

I tried up --preserve=direct DataFrames and it had no effect. DataFrames remained on version v1.3.6.

Then I removed the DataFrames package and did

add DataFrames@1.6.1

The package was not added. This is what appeared on the REPL:

(BWModule) pkg> add DataFrames@1.6.1
   Resolving package versions...
ERROR: Unsatisfiable requirements detected for package Compat [34da2185]:
 Compat [34da2185] log:
 ├─possible versions are: 1.0.0-4.10.0 or uninstalled
 ├─restricted by compatibility requirements with DataFrames [a93c6f00] to versions: 4.2.0-4.10.0
 │ └─DataFrames [a93c6f00] log:
 │   ├─possible versions are: 0.11.7-1.6.1 or uninstalled
 │   ├─restricted to versions * by Utils [2bd11c06], leaving only versions: 0.11.7-1.6.1
 │   │ └─Utils [2bd11c06] log:
 │   │   ├─possible versions are: 0.1.1 or uninstalled
 │   │   └─Utils [2bd11c06] is fixed to version 0.1.1
 │   └─restricted to versions 1.6.1 by an explicit requirement, leaving only versions: 1.6.1
 └─restricted by compatibility requirements with RDates [42063a9e] to versions: 3.31.0-3.46.2 — no versions left
   └─RDates [42063a9e] log:
     ├─possible versions are: 0.1.0-0.5.1 or uninstalled
     ├─restricted to versions * by an explicit requirement, leaving only versions: 0.1.0-0.5.1
     └─restricted by compatibility requirements with HolidayCalendars [805b3977] to versions: 0.5.1
       └─HolidayCalendars [805b3977] log:
         ├─possible versions are: 0.1.0 or uninstalled
         └─restricted to versions * by an explicit requirement, leaving only versions: 0.1.0

I then removed the packages RDates and HolidayCalendars and tried again

add DataFrames@1.6.1

That worked. The DataFrames package was updated to version 1.6.1

3 Likes