如何使用julia';s PackageCompiler为PlotStats构建快速启动环境?
我想使用“DataFrames,CSV,StatsPlots”软件包,在重新启动计算机后无需等待时间,我正在尝试使用PackageCompiler,但自述文件或帮助很难理解如何使用julia';s PackageCompiler为PlotStats构建快速启动环境?,julia,packagecompiler.jl,Julia,Packagecompiler.jl,我想使用“DataFrames,CSV,StatsPlots”软件包,在重新启动计算机后无需等待时间,我正在尝试使用PackageCompiler,但自述文件或帮助很难理解 using using PackageCompiler syso, sys = compile_incremental(:DataFrames,:CSV,:StatsPlots) 嗯,我害怕破坏系统映像,所以,首先,我不使用'force=true'选项。它显示错误消息: ... Resolving package vers
using using PackageCompiler
syso, sys = compile_incremental(:DataFrames,:CSV,:StatsPlots)
嗯,我害怕破坏系统映像,所以,首先,我不使用'force=true'选项。它显示错误消息:
...
Resolving package versions...
ERROR: LoadError: Unsatisfiable requirements detected for package WinRPM [c17dfb99]:
WinRPM [c17dfb99] log:
├─possible versions are: [0.3.3, 0.4.0-0.4.3] or uninstalled
├─restricted by compatibility requirements with PackageCompiler [9b87118b] to versions: [0.3.3, 0.4.0-0.4.3]
│ └─PackageCompiler [9b87118b] log:
│ ├─possible versions are: [0.5.0-0.5.1, 0.6.0-0.6.5] or uninstalled
│ └─restricted to versions * by an explicit requirement, leaving only versions [0.5.0-0.5.1, 0.6.0-0.6.5]
├─restricted by compatibility requirements with Compat [34da2185] to versions: 0.4.3 or uninstalled, leaving only versions: 0.4.3
│ └─Compat [34da2185] log:
│ ├─possible versions are: [1.0.0-1.0.1, 1.1.0, 1.2.0, 1.3.0, 1.4.0, 1.5.0-1.5.1, 2.0.0, 2.1.0, 2.2.0, 3.0.0, 3.1.0, 3.2.0] or uninstalled
│ └─restricted to versions 3.2.0 by an explicit requirement, leaving only versions 3.2.0
└─restricted by compatibility requirements with HTTPClient [0862f596] to versions: uninstalled — no versions left
└─HTTPClient [0862f596] log:
├─possible versions are: 0.2.1 or uninstalled
└─restricted by compatibility requirements with Compat [34da2185] to versions: uninstalled
└─Compat [34da2185] log: see above
通过PackageCompilerX,它似乎是可行的。首先,软件包的版本非常敏感,它需要正确的版本才能让一切正常工作 下面是我针对julia 1.3.1的两个测试环境
- debian:apt-t不稳定安装julia-libjulia-dev
- archlinux:pacman-sJulia
pkg> add https://github.com/KristofferC/PackageCompilerX.jl
pkg> status
Status `~/.julia/environments/v1.3/Project.toml`
...
将系统的Project.toml复制到当前目录以自定义您的开发环境,使用编辑器(此处vim
)删除一些无法编译或不需要的包
shell> rm Project.toml
shell> cp ~/.julia/environments/v1.3/Project.toml .
shell> vim Project.toml
激活本地包环境
julia> using PackageCompilerX
pkg> activate .
pkg> status # double check all package which you want have installed
Status `~/prj/julia/Project.toml`
[336ed68f] CSV v0.5.22
[a93c6f00] DataFrames v0.20.0
...
在julia提示符中自动生成sybmol数组
s=split(read("Project.toml", String),"\n")
pkgs=Symbol[]
for i in s
if (length(i) > 0) && !(i[1] in ['[','#'])
push!(pkgs, Symbol(split(i," ")[1]))
end
end
展示包装
julia> pkgs
10-element Array{Symbol,1}:
:CSV
:DataFrames
...
编译它并输出到“dev.so”
退出julia,然后按重新启动julia
julia -J dev.so
对这两种发射方法和结果进行基准测试:
time julia -q -e 'using Plots,UnicodePlots; unicodeplots(); display(plot(sin))'
# result: 35.175s
time julia -J dev.so -q -e 'using Plots,UnicodePlots; unicodeplots(); display(plot(sin))'
# result: 15.2365s
julia -J dev.so
time julia -q -e 'using Plots,UnicodePlots; unicodeplots(); display(plot(sin))'
# result: 35.175s
time julia -J dev.so -q -e 'using Plots,UnicodePlots; unicodeplots(); display(plot(sin))'
# result: 15.2365s