Julia0.6无法添加LinearAlgebra

我在使用Julia0.6运行程序中的example中的例子时,出现如下报错

jinzhuo@jinzhuo-virtual-machine:~/code/MatrixProductStates.jl-master/examples$ julia rydberg_density_matrix.jl
ERROR: LoadError: LoadError: ArgumentError: Module LinearAlgebra not found in current path.
Run `Pkg.add("LinearAlgebra")` to install the LinearAlgebra package.
Stacktrace:
 [1] _require(::Symbol) at ./loading.jl:428
 [2] require(::Symbol) at ./loading.jl:398
 [3] include_from_node1(::String) at ./loading.jl:569
while loading /home/jinzhuo/.julia/v0.6/MatrixProductStates/src/MatrixProductStates.jl, in expression starting on line 17
while loading /home/jinzhuo/code/MatrixProductStates.jl-master/examples/rydberg_density_matrix.jl, in expression starting on line 2

根据提示我进入Julia的REPL模式进行如下操作,以及报错

jinzhuo@jinzhuo-virtual-machine:~/code/MatrixProductStates.jl-master/examples$ julia
               _
   _       _ _(_)_     |  A fresh approach to technical computing
  (_)     | (_) (_)    |  Documentation: https://docs.julialang.org
   _ _   _| |_  __ _   |  Type "?help" for help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 0.6.0 (2017-06-19 13:05 UTC)
 _/ |\__'_|_|_|\__'_|  |  Official http://julialang.org/ release
|__/                   |  x86_64-pc-linux-gnu

julia> Pkg.add("LinearAlgebra")
ERROR: unknown package LinearAlgebra
macro expansion at ./pkg/entry.jl:53 [inlined]
(::Base.Pkg.Entry.##1#3{String,Base.Pkg.Types.VersionSet})() at ./task.jl:335
Stacktrace:
 [1] sync_end() at ./task.jl:287
 [2] macro expansion at ./task.jl:303 [inlined]
 [3] add(::String, ::Base.Pkg.Types.VersionSet) at ./pkg/entry.jl:51
 [4] (::Base.Pkg.Dir.##4#7{Array{Any,1},Base.Pkg.Entry.#add,Tuple{String}})() at ./pkg/dir.jl:36
 [5] cd(::Base.Pkg.Dir.##4#7{Array{Any,1},Base.Pkg.Entry.#add,Tuple{String}}, ::String) at ./file.jl:70
 [6] #cd#1(::Array{Any,1}, ::Function, ::Function, ::String, ::Vararg{String,N} where N) at ./pkg/dir.jl:36
 [7] add(::String) at ./pkg/pkg.jl:117

这里却提示LinearAlgebra找不到,这令我很困惑。
请求各位大神帮助。

这是内置的标准库,不用安装直接 using 用就行

为什么还在用 0.6?现在大多数包都不支持 0.6了。

因为这份程序是基于0.6的,而我是Julia入门小白,没办法把程序修改到最新版的Julia,所以只能硬用0.6

直接using会出现以下报错

julia> using LinearAlgebra
ERROR: ArgumentError: Module LinearAlgebra not found in current path.
Run `Pkg.add("LinearAlgebra")` to install the LinearAlgebra package.
Stacktrace:
 [1] _require(::Symbol) at ./loading.jl:428
 [2] require(::Symbol) at ./loading.jl:398

请问是因为版本问题还是什么呢

提示模块 not found,请执行 Pkg.add("LinearAlgebra"),这步有执行过和报错信息吗

linear algebra 包从 0.7 版本开始加入标准库,这行代码是 woclass 近期加的,你直接 add 最新版应该可以,不行就 git reset 到旧版(可能存在bug)

有执行过的,报错信息如下

julia> Pkg.add("LinearAlgebra")
ERROR: unknown package LinearAlgebra
macro expansion at ./pkg/entry.jl:53 [inlined]
(::Base.Pkg.Entry.##1#3{String,Base.Pkg.Types.VersionSet})() at ./task.jl:335
Stacktrace:
 [1] sync_end() at ./task.jl:287
 [2] macro expansion at ./task.jl:303 [inlined]
 [3] add(::String, ::Base.Pkg.Types.VersionSet) at ./pkg/entry.jl:51
 [4] (::Base.Pkg.Dir.##4#7{Array{Any,1},Base.Pkg.Entry.#add,Tuple{String}})() at ./pkg/dir.jl:36
 [5] cd(::Base.Pkg.Dir.##4#7{Array{Any,1},Base.Pkg.Entry.#add,Tuple{String}}, ::String) at ./file.jl:70
 [6] #cd#1(::Array{Any,1}, ::Function, ::Function, ::String, ::Vararg{String,N} where N) at ./pkg/dir.jl:36
 [7] add(::String) at ./pkg/pkg.jl:117

题外话:

  • 这个帖子和你开的另一个帖子相关,补个链接: 如何自己写一份Project.toml (其实在原贴后边继续回复就行了,不必重开。)
  • 另外,不小心删了回复,点右上角的编辑可以恢复。

原仓库 用 Julia 0.6 版本,也没有 Project.toml 文件,所以你不能在 Julia 正式版本中安装,你在 Julia 0.6 版本下执行(README 的内容)

# julia 0.x 版本
Pkg.clone("https://github.com/jdnz/MatrixProductStates.jl.git")

就能正常安装和调包了。

另外,上个帖子 woclass 更新了带 Project.toml新仓库,你可以在 Julia 正式版中安装,1.8.5 版本亲测能正常 using。

# Julia  1.x.y 版本
using Pkg
Pkg.dev("https://github.com/JuliaPapers/MatrixProductStates.jl.git")

ADD:
建议阅读仓库文档的 README.md 文件。还有原仓库很旧,而且只有空测试,能 using 也不能确定能否正常使用。

好的,首先非常感谢您对于求助完整性的建议。我之后会注意表述完整。
我在用Julia0.6版本安装程序的时候以及在REPL中执行过

Pkg.clone("https://github.com/jdnz/MatrixProductStates.jl.git")

然后我的包库已经显示如下

julia> Pkg.status()
1 required packages:
 - MAT                           0.4.0
13 additional packages:
 - BinDeps                       0.8.10
 - BinaryProvider                0.3.3
 - Blosc                         0.5.1
 - BufferedStreams               0.4.1
 - CMakeWrapper                  0.1.0
 - Compat                        2.2.0
 - DataStructures                0.8.4
 - HDF5                          0.9.5
 - Libz                          0.4.0
 - MatrixProductStates           0.0.0-             main (unregistered)
 - Parameters                    0.9.2
 - SHA                           0.5.7
 - URIParser                     0.3.1

这里显示我已经成功安装成功所需的包。但是当我在执行example中的实例时,仍然出现了之前帖子中的报错,如下

jinzhuo@jinzhuo-virtual-machine:~/code/MatrixProductStates.jl-master/examples$ julia rydberg_density_matrix.jl
ERROR: LoadError: LoadError: ArgumentError: Module LinearAlgebra not found in current path.
Run `Pkg.add("LinearAlgebra")` to install the LinearAlgebra package.
Stacktrace:
 [1] _require(::Symbol) at ./loading.jl:435
 [2] require(::Symbol) at ./loading.jl:405
 [3] include_from_node1(::String) at ./loading.jl:576
while loading /home/jinzhuo/.julia/v0.6/MatrixProductStates/src/MatrixProductStates.jl, in expression starting on line 17
while loading /home/jinzhuo/code/MatrixProductStates.jl-master/examples/rydberg_density_matrix.jl, in expression starting on line 2

我现阶段的进度就是卡在无法正常运行实例。
另外在新版Julia中执行出现过其他报错,经过其他大神解决证明是由于Julia版本更新导致一些方法被废弃,所以我才被迫继续使用Julia0.6。解决链接如下[未知的运行报错]( 未知的运行报错 - 综合讨论区 / Julia入门 - Julia中文社区 (juliacn.com))
关于README.md文件中的内容,我已经提前阅读过,只是局限于相关经验的欠缺无法完全理解其中的意思,之后我会继续努力的。

下边是在 Julia 0.6 下,按仓库 README 的安装,不过没有成功。(注意用旧版仓库链接,0.6 版本的时候还没 LinearAlgebra,应该不会有这个报错)

# 安装依赖项
sudo apt-get install git build-essential hdf5-tools curl gfortran patch cmake m4 pkg-config -y
# 手动构建 -- 可以略过
git clone git://github.com/JuliaLang/julia.git
cd julia/
git checkout v0.6.4
make
# 因为网络问题 Pkg.add 的代码可能要执行多次
julia 'Pkg.add("MAT")'
julia 'Pkg.add("CuArrays")'
julia 'Pkg.pin("CuArrays", v"0.6.2")'
julia 'Pkg.clone("https://github.com/jdnz/MatrixProductStates.jl")'

下边是执行 Pkg.status 后的结果

julia> Pkg.status()
3 required packages:
 - CuArrays                      0.6.2              pinned.df0ee78e.tmp
 - MAT                           0.4.0
 - Revise                        0.1.1
37 additional packages:
 - AbstractFFTs                  0.3.2
 - Adapt                         0.2.0
 - BinDeps                       0.8.10
 - BinaryProvider                0.3.3
 - Blosc                         0.5.1
 - BufferedStreams               0.4.1
 - CMakeWrapper                  0.1.0
 - CUDAapi                       0.4.3
 - CUDAdrv                       0.7.8
 - CUDAnative                    0.6.3
 - CommonSubexpressions          0.1.0
 - Compat                        2.2.0
 - DataStructures                0.8.4
 - DiffResults                   0.0.4
 - DiffRules                     0.0.10
 - FastClosures                  0.2.1
 - ForwardDiff                   0.7.5
 - GPUArrays                     0.2.4
 - HDF5                          0.9.5
 - Homebrew                      0.6.6
 - JSON                          0.17.2
 - LLVM                          0.5.3
 - Libz                          0.4.0
 - LinearMaps                    1.0.4
 - MacroTools                    0.4.5
 - MatrixProductStates           0.0.0-             master (unregistered)
 - MicroLogging                  0.3.2
 - NNlib                         0.3.1
 - NaNMath                       0.3.2
 - Nullables                     0.0.8
 - Parameters                    0.9.2
 - Requires                      0.4.4
 - SHA                           0.5.7
 - SpecialFunctions              0.6.0
 - StaticArrays                  0.7.2
 - TensorOperations              0.6.1
 - URIParser                     0.3.1

执行 using CuArrays,提示

julia> using CuArrays
INFO: Precompiling module CuArrays.
WARNING: CUDAdrv.jl has not been successfully built, and will not work properly.
...
WARNING: Please run Pkg.build() and restart Julia.

提示执行 Pkg.build 后重启,我用 Mac 端会出现 build("HomeBrew") 失败,Linux 没试过。版本太旧,可能还会有很多问题,除了搜 Google 也可以去英文论坛检索

没办法把程序修改到最新版的Julia,所以只能硬用0.6

以后可以用 Julia 0.7 来运行一下, 它会提示你该怎么改成1.0以上通用的版本。

是的,我按照步骤也完成了README.md中的内容,最终执行Pkg.status(),如下

julia> Pkg.status()
2 required packages:
 - CuArrays                      0.6.2              pinned.df0ee78e.tmp
 - MAT                           0.4.0
32 additional packages:
 - AbstractFFTs                  0.3.2
 - Adapt                         0.2.0
 - BinDeps                       0.8.10
 - BinaryProvider                0.3.3
 - Blosc                         0.5.1
 - BufferedStreams               0.4.1
 - CMakeWrapper                  0.1.0
 - CUDAapi                       0.4.3
 - CUDAdrv                       0.7.8
 - CUDAnative                    0.6.3
 - CommonSubexpressions          0.1.0
 - Compat                        2.2.0
 - DataStructures                0.8.4
 - DiffResults                   0.0.4
 - DiffRules                     0.0.10
 - FastClosures                  0.2.1
 - ForwardDiff                   0.7.5
 - GPUArrays                     0.2.4
 - HDF5                          0.9.5
 - LLVM                          0.5.3
 - Libz                          0.4.0
 - MacroTools                    0.4.5
 - MatrixProductStates           0.0.0-             main (unregistered)
 - MicroLogging                  0.3.2
 - NNlib                         0.3.1
 - NaNMath                       0.3.2
 - Parameters                    0.9.2
 - Requires                      0.4.4
 - SHA                           0.5.7
 - SpecialFunctions              0.6.0
 - StaticArrays                  0.7.2
 - URIParser                     0.3.1

显示该有的包基本都有了,当我using CuArrays的时候出现如下报错

julia> using CuArrays
INFO: Precompiling module CuArrays.
WARNING: CUDAdrv.jl has not been successfully built, and will not work properly.
WARNING: Please run Pkg.build("CUDAdrv") and restart Julia.
WARNING: CUDAdrv.jl has not been successfully built, and will not work properly.
WARNING: Please run Pkg.build("CUDAdrv") and restart Julia.
WARNING: LLVM.jl has not been configured, and will not work properly.
WARNING: Please run Pkg.build("LLVM") and restart Julia.
WARNING: LLVM.jl has not been configured, and will not work properly.
WARNING: Please run Pkg.build("LLVM") and restart Julia.
WARNING: CUDAnative.jl has not been successfully built, and will not work properly.
WARNING: Please run Pkg.build("CUDAnative") and restart Julia.
ERROR: LoadError: LoadError: LoadError: CUDAdrv.jl has not been configured.
Stacktrace:
 [1] version() at /home/jinzhuo/.julia/v0.6/CUDAdrv/src/version.jl:10
 [2] include_from_node1(::String) at ./loading.jl:576
 [3] include(::String) at ./sysimg.jl:14
 [4] include_from_node1(::String) at ./loading.jl:576
 [5] include(::String) at ./sysimg.jl:14
 [6] include_from_node1(::String) at ./loading.jl:576
 [7] include(::String) at ./sysimg.jl:14
 [8] anonymous at ./<missing>:2
while loading /home/jinzhuo/.julia/v0.6/CuArrays/src/blas/libcublas_types.jl, in expression starting on line 71
while loading /home/jinzhuo/.julia/v0.6/CuArrays/src/blas/CUBLAS.jl, in expression starting on line 10
while loading /home/jinzhuo/.julia/v0.6/CuArrays/src/CuArrays.jl, in expression starting on line 28
ERROR: Failed to precompile CuArrays to /home/jinzhuo/.julia/lib/v0.6/CuArrays.ji.
Stacktrace:
 [1] compilecache(::String) at ./loading.jl:710
 [2] _require(::Symbol) at ./loading.jl:497
 [3] require(::Symbol) at ./loading.jl:405

当我继续执行Pkg.build("CUDAdrv")时出现

INFO: Building CUDAdrv
===================================================[ ERROR: CUDAdrv ]====================================================

LoadError: MethodError: no method matching dlopen(::Void)
Closest candidates are:
  dlopen(::Symbol) at libdl.jl:94
  dlopen(::Symbol, ::Integer) at libdl.jl:94
  dlopen(::AbstractString) at libdl.jl:97
  ...
while loading /home/jinzhuo/.julia/v0.6/CUDAdrv/deps/build.jl, in expression starting on line 108

=========================================================================================================================

====================================================[ BUILD ERRORS ]=====================================================

WARNING: CUDAdrv had build errors.

 - packages with build errors remain installed in /home/jinzhuo/.julia/v0.6
 - build the package(s) and all dependencies with `Pkg.build("CUDAdrv")`
 - build a single package by running its `deps/build.jl` script

=========================================================================================================================

我之前尝试过英文论坛,但是学校严查翻墙,所以我无法使用英文论坛。还请大神多多帮助。

非常感谢您的回答。
是的,我可以使用Julia1.8,但是基于之前出现过的问题,我还是被迫只能使用Julia0.6。

Julia 0.7 兼容 0.6,只是会告诉你哪里将会被 deprecate,所以适合用来改 code 到 1.0 以上的版本。

其实没有被迫,缺的东西自己定义进去就好了