🍣

Plots.jlとCUDA.jlのインストールエラー

2024/06/29に公開

エラーになった...

Julia のバージョン 1.9.3Plots.jl(version:1.39.0)がすでにある状態でCUDA.jl(version:5.1.2)をインストールしたところFFMEPG関連のエラーが出てしまった。
インストールしていたパッケージは次の通り。

  "GR"                    => v"0.72.10"
  "ForwardDiff"           => v"0.10.36"
  "BenchmarkTools"        => v"1.5.0"
  "SymPy"                 => v"1.2.0"
  "IJulia"                => v"1.24.2"
  "Plots"                 => v"1.39.0"
  "StaticArrays"          => v"1.9.5"
  "NLsolve"               => v"4.5.1"
  "DifferentialEquations" => v"7.11.0"
エラーコード(ただし、.julia以下のみ)
ERROR: Error building `FFMPEG`:
ERROR: LoadError: Unable to open libLLVM!
Stacktrace:
  [1] error(s::String)
    @ Base .\error.jl:35
  [2] (::BinaryProvider.var"#open_libllvm#124")()
    @ BinaryProvider
.julia\packages\BinaryProvider\U2dKK\src\PlatformNames.jl:652
  [3] detect_cxx11_string_abi()
    @ BinaryProvider
.julia\packages\BinaryProvider\U2dKK\src\PlatformNames.jl:655
  [4] detect_compiler_abi()
    @ BinaryProvider
.julia\packages\BinaryProvider\U2dKK\src\PlatformNames.jl:668
  [5] top-level scope
    @ .julia\packages\BinaryProvider\U2dKK\src\PlatformNames.jl:685
  [6] include(mod::Module, _path::String)
    @ Base .\Base.jl:457
  [7] include(x::String)
    @ BinaryProvider
.julia\packages\BinaryProvider\U2dKK\src\BinaryProvider.jl:1
  [8] top-level scope
    @ .julia\packages\BinaryProvider\U2dKK\src\BinaryProvider.jl:12
  [9] include
    @ .\Base.jl:457 [inlined]
 [10] 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, UInt128}}, source::String)
    @ Base .\loading.jl:2049
 [11] top-level scope
    @ stdin:3
in expression starting at .julia\packages\BinaryProvider\U2dKK\src\PlatformNames.jl:685
in expression starting at .julia\packages\BinaryProvider\U2dKK\src\BinaryProvider.jl:1
ERROR: LoadError: Failed to precompile BinaryProvider [b99e7846-7c00-51b0-8f62-c81ae34c0232] to ".julia\\compiled\\v1.9\\BinaryProvider\\jl_C5D9.tmp".
Stacktrace:
  [1] error(s::String)
    @ Base .\error.jl:35
  [2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, keep_loaded_modules::Bool)
    @ Base .\loading.jl:2300
  [3] compilecache
    @ .\loading.jl:2167 [inlined]
  [4] _require(pkg::Base.PkgId, env::String)
    @ Base .\loading.jl:1805
  [5] _require_prelocked(uuidkey::Base.PkgId, env::String)
    @ Base .\loading.jl:1660
  [6] macro expansion
    @ .\loading.jl:1648 [inlined]
  [7] macro expansion
    @ .\lock.jl:267 [inlined]
  [8] require(into::Module, mod::Symbol)
    @ Base .\loading.jl:1611
  [9] include(fname::String)
    @ Base.MainInclude .\client.jl:478
 [10] top-level scope
    @ none:5
in expression starting at
.julia\packages\FFMPEG\guN1x\deps\build.jl:1

エラーコードの最後の行を見るとbuild.jlの1行目からエラーが起きている。このファイルの一行目は using BinaryProvider で、このBinaryProvider関連でエラーが起きていることがわかった。知識がない私にはこれしか分からず、Geminiにも聞いて言われたことをやったが全然うまくいかなかった。

2時間ほど格闘して面倒になったので、.juliaをフォルダごと削除。さらに、Juliaもアンインストール。その後、マイクロソフトストアから Julia(version:1.10.4) をインストールして、パッケージをインストール。CUDA.jlPlots.jl でも惨敗。実用上は問題ないはずと祈りながらjupyter notebook (正確にはVScodeの.ipynb ファイル)上で using Plots を実行。当然、怒られた。

解決策(?)

もう一回、.juliaを削除して、今度は Plots.jl から CUDA.jl の順にインストール。すると、特に何も言われずインストールできた。その後、DifferentialEquations.jlなどをインストールしたが、今まで何もなかったように上手くいってしまった。

同様の問題に直面している人はパッケージを全部消して、インストールする順番を変えてみるとうまくいくかもしれない......?(自己責任でお願いします。)

追記

今確認すると、.julia\packages\FFMPEGまではあるのだが、それ以降のディレクトリが見つからない。さらに、.julia\packages\BinaryProvider\U2dKK\src\BinaryProvider のBinaryProviderも見つからない......。疑問に思い、現在のパッケージのversionを見たところ、

  "StaticArrays"          => v"1.9.6"
  "SymPy"                 => v"2.1.1"
  "GR"                    => v"0.73.6"
  "DifferentialEquations" => v"7.13.0"
  "NLsolve"               => v"4.5.1"
  "IJulia"                => v"1.25.0"
  "Plots"                 => v"1.40.4"
  "ForwardDiff"           => v"0.10.36"
  "CUDA"                  => v"5.4.2"
  "BenchmarkTools"        => v"1.5.0"

となっていた。どちらも、CUDA.jl, Plots.jl の version が新しい。このあたりが原因かも。ただし、Julia の version を 1.10.4 で CUDA.jl, Plots.jl の順にインストールしてエラーが出たことについては説明できない。よくわからん!!

Discussion