Julia 中的 Pkg
— 焉知非鱼Pkg
进入 Pkg 模式 #
Pkg 是 Julia 中包管理工具。Pkg 来自于 REPL, 在 Julia 的 REPL 中按下 ]
就进入 Pkg REPL 了。要回到 Julia REPL, 按退格键或 ^C
。
使用 Pkg #
add JSON # 添加一个 package
add JSON StaticArrays # 添加多个 package
rm JSON # 移除一个 package
rm JSON StaticArrays # 移除多个 package
add https://github.com/JuliaLang/Example.jl # 添加一个未注册的 package
rm Example # 按名字移除 package
update Example # 升级一个已安装的 package
update # 升级所有已安装的 package
environments #
你可能已经注意到 Pkg REPL 提示符前面的 (@v1.5)
字符串了。这里的 (@v1.5)
就是激活环境(active environment)。激活环境是能被诸如 add
、rm
和 update
等 Pkg 命令修改的环境。
我们可以设置一个新的激活环境用于实验。要设置激活环境, 使用 activate
:
(@v1.5) pkg> activate tutorial
Activating new environment at `~/tutorial/Project.toml`
~/tutorial/Project.toml
是激活环境的项目文件。项目文件是 Pkg 存储环境的元数据的地方。
(tutorial) pkg> status
Status `~/tutorial/Project.toml` (empty project)
现在这个新的环境是空的, 我们添加一个 package 观察下:
(tutorial) pkg> add Example
Updating registry at `~/.julia/registries/General`
Updating git-repo `https://github.com/JuliaRegistries/General.git`
Resolving package versions...
Cloning [7876af07-990d-54b4-ab0e-23690620f79a] Example from https://github.com/JuliaLang/Example.jl.git
Installed Example ─ v0.5.3
Updating `~/tutorial/Project.toml`
[7876af07] + Example v0.5.3
Updating `~/tutorial/Manifest.toml`
[7876af07] + Example v0.5.3
用 status
命令查看激活环境的信息:
(tutorial) pkg> status
Status `~/tutorial/Project.toml`
[7876af07] Example v0.5.3
使用 develop
命令设置 Example
package 的 一个 git clone
, 以供我们修改这个本地仓库:
(tutorial) pkg> develop --local Example
Cloning git-repo `https://github.com/JuliaLang/Example.jl.git`
Resolving package versions...
Updating `~/tutorial/Project.toml`
[7876af07] ~ Example v0.5.3 ⇒ v0.5.4 `dev/Example`
Updating `~/tutorial/Manifest.toml`
[7876af07] ~ Example v0.5.3 ⇒ v0.5.4 `dev/Example`
用 ;
切换到 shell 模式, 用 vi 修改 ~/tutorial/dev/Example/src/Example.jl
文件, 增加一个 plusone
函数, 保存。
在 Julia 的 REPL 中, 导入修改后的 Example
package:
julia> import Example
[ Info: Precompiling Example [7876af07-990d-54b4-ab0e-23690620f79a]
julia> Example.plusone(1)
2
julia> Example.plusone(4)
5
可以看到我们添加的函数生效了, 这样就很方便我们添加测试新功能。如果我们已经不再需要本地的 Example
了, 需要使用 free
命令以停止使用本地克隆的 package, 转而使用已注册版本代替:
(tutorial) pkg> free Example
Resolving package versions...
Updating `~/tutorial/Project.toml`
[7876af07] ~ Example v0.5.4 `dev/Example` ⇒ v0.5.3
Updating `~/tutorial/Manifest.toml`
[7876af07] ~ Example v0.5.4 `dev/Example` ⇒ v0.5.3
如果已经用 tutorial
做完实验了, 可以使用不带参数的 activate
回到默认环境:
(tutorial) pkg> activate
Activating environment at `~/.julia/environments/v1.5/Project.toml`
(@v1.5) pkg>