我印象中肯定在论坛上写过类似的内容。搜帖子没搜到。收藏夹里也没有。
那就重写一版吧。
整体的想法是用 v0.7 版本做中转,v0.7 可以给出大量的弃用警告,便于我们修复旧的代码库。
v0.7 版本的下载
- 可以去 tuna 的镜像站: Index of /julia-releases/bin/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
- 如果你使用
juliaup
:juliaup add 0.7
旧版依赖安装
MatrixProductStates.jl
的 `` 文件中包含两个依赖项:
LinearMaps
: GitHub - JuliaLinearAlgebra/LinearMaps.jl: A Julia package for defining and working with linear maps, also known as linear transformations or linear operators acting on vectors. The only requirement for a LinearMap is that it can act on a vector (by multiplication) efficiently.TensorOperations
: GitHub - Jutho/TensorOperations.jl: Julia package for tensor contractions and related operations
这两个包现在还在维护,所以直接尝试用 ] add
安装:
] add LinearMaps
:成功安装了v2.3.0
版本] add TensorOperations
:成功安装了v0.7.1
版本
我们运气不错可以正常安装。
无法直接安装依赖
更常见的情况是,旧包使用了旧的依赖,依赖项也没有维护了。
这个时候你可能要评估一下
- 修复这个包和他的依赖树(依赖也有依赖)大致付出的时间是否值得
- 相对于读源码、论文然后重写一般谁更省事?
生成 Project.toml
切换到 MatrixProductStates.jl
的根目录,打开 julia v0.7
- 切换到 Pkg 模式,以下操作均在 Pkg 模式中进行:
]
- 激活当前项目:
activate .
Pkg 模式的提示符变为:(MatrixProductStates.jl) pkg>
这一步也会自动生成:Project.toml
和Manifest.toml
- 安装依赖包。注意,刚刚装包是装在全局了
依赖全局装过了,这一步应该很快 - 检查已经安装的依赖:
st
(MatrixProductStates.jl) pkg> st
Status `Project.toml`
[7a12625a] + LinearMaps v2.3.0
[6aa20fa7] + TensorOperations v0.7.1
- (可选)预编译依赖:
precompile
- 按退格键/Backspace 返回 julia REPL
补全 Project.toml
信息
name = "MatrixProductStates"
uuid = "28892423-5e71-5a24-babc-7f7f28a8bceb"
authors = [ "James Douglas" ]
version = "0.1.0"
[compat]
julia = "1.0"
原有的 [deps]
一节不要动它,让 Pkg 去管理他
这里说明一下如何生成 uuid
- v0.7:直接使用 uuid4:
using UUIDs; uuid4()
- v1.6+:使用带命名空间的 uuid,建议直接用作者名:
using UUIDs; uuid5(uuid4(), "James Douglas")
尝试运行
在 julia REPL 中
include("src\\MatrixProductStates.jl")
导入时会产生大量的弃用警告:
┌ Warning: Deprecated syntax `multiple line breaks between doc string and object` at E:\opensource-repo\MatrixProductStates.jl\src\MatrixProductStates.jl:41.
│ Use `at most one line break` instead.
└ @ E:\opensource-repo\MatrixProductStates.jl\src\MatrixProductStates.jl:41
...
WARNING: importing deprecated binding Base.AbstractRNG into MatrixProductStates.
WARNING: Base.AbstractRNG is deprecated: it has been moved to the standard library package `Random`.
Add `using Random` to your imports.
likely near E:\opensource-repo\MatrixProductStates.jl\src\MatrixProductStates.jl:26
...
┌ Warning: The postfix .' syntax is deprecated. For vector v in v.', use transpose(v) instead. For matrix A in A.', use copy(transpose(A)) instead, unless A.' appears as an argument of *, / or \. In those cases, use transpose(A) instead.
└ @ none:0
如果你不介意,现在其实这个包就可用了。
后续的升级就是慢慢的修复警告。