How to find and add the right version of packages for Flux.jl

Hi there,

I’m trying to compile new Flux package in master version - as the Flux#master(0.9.0) is supposed to be quite better than the previous versions. I’ve been instructed to use Julia 1.3 but I don’t know how to make it all work.

Flux fails to precompile because of incompatibility with other packages (FFTW and Zygote). Is there a way to find which packages and which versions to use so that is at least precompiles and is ready to use?

Right now the problem seems to be with FFTW package which Flux is not able to load and it throws an error when I try to use build FFTW. FFTW version is 1.0.1 if that helps anyhow.

Also, is there a possibility to specify both #master version and specific version i.e. @0.4.3 for a package?

Thank you all for your help and if needed, I can definitely give more info about my issues.

In cases like this, it may be helpful to start with a clean project:

pkg> activate NewProject
pkg> add Flux#master
julia> using Flux

Then you can see if there are any issues and add any other dependencies you may need.

No, because the two requests may conflict with each other.

Thank you for suggestions, unfortunately this does not work and it probably is a different issue. I add Flux#master but when I try using Flux I get this error (which continues to three more errors about precompiling FFTW, Zygote and Flux):

julia> using Flux
[ Info: Precompiling Flux [587475ba-b771-5e3f-ad9e-33799f191a9c]
ERROR: LoadError: LoadError: could not load library "C:\Users\masen\.julia\packages\FFTW\MJ7kl\deps\usr\bin\libfftw3-3.dll"
The specified module could not be found.

Stacktrace:
 [1] top-level scope at C:\Users\masen\.julia\packages\FFTW\MJ7kl\src\fft.jl:58
 [2] include at .\boot.jl:328 [inlined]
 [3] include_relative(::Module, ::String) at .\loading.jl:1105
 [4] include at .\Base.jl:31 [inlined]
 [5] include(::String) at C:\Users\masen\.julia\packages\FFTW\MJ7kl\src\FFTW.jl:1
 [6] top-level scope at C:\Users\masen\.julia\packages\FFTW\MJ7kl\src\FFTW.jl:68
 [7] include at .\boot.jl:328 [inlined]
 [8] include_relative(::Module, ::String) at .\loading.jl:1105
 [9] include(::Module, ::String) at .\Base.jl:31
 [10] top-level scope at none:2
 [11] eval at .\boot.jl:330 [inlined]
 [12] eval(::Expr) at .\client.jl:433
 [13] top-level scope at .\none:3
in expression starting at C:\Users\masen\.julia\packages\FFTW\MJ7kl\src\fft.jl:58
in expression starting at C:\Users\masen\.julia\packages\FFTW\MJ7kl\src\FFTW.jl:68

even though when adding Flux, FFTW was added.

Is it possible there’s not a problem with packages but something else?

My guess is that this is the know issue of missing C:\julia\bin\7z.exe from Julia 1.3 Windows binaries.

1 Like

Do you think @Tero_Frondelius, that this error is also because of the issue you mentioned?

ERROR: LoadError: LoadError: Could not find libcublas

If you don’t have any specific reasons to use Julia 1.3 try Julia 1.2 everything should work there.

Julia 1.2 throws the same error :frowning:

Have you tried deleting the .julia directory and re adding the package? I’m not on Windows so just kind guessing with the nuclear option :grin:

Starting a clean environment is a good idea. But note that they “stack”, so that if your default environment has a million things installed, these are still available within a new one. I think this means their versions also influence what versions you get in a new environment. And I don’t think there’s a good way to understand what’s constraining what.

1.2 vs 1.3 probably makes no difference, except in that they will be default have different default environments.

This is not accurate. The resolver only operates on the active project (the environment stack has no bearing on this process). With regards to environment stacking, the topmost project is guaranteed to work.

I believe this issue is the difference: https://github.com/JuliaLang/julia/issues/33687 I am not an expert thus I might be wrong as well.