在项目虚拟环境中添加包时发生Pkg.precompile错误(Julia)
我来自Python背景,现在正试图学习Julia,所以我的问题可能与我混淆Python和Julia之间的虚拟环境有关。在Julia中,我在将包添加到项目虚拟环境中时遇到困难。但是,当我不使用项目环境时,添加包没有问题,例如在REPL中:在项目虚拟环境中添加包时发生Pkg.precompile错误(Julia),julia,Julia,我来自Python背景,现在正试图学习Julia,所以我的问题可能与我混淆Python和Julia之间的虚拟环境有关。在Julia中,我在将包添加到项目虚拟环境中时遇到困难。但是,当我不使用项目环境时,添加包没有问题,例如在REPL中: (@1.6) pkg> activate . (self_learn) pkg> st Project self_learn v0.1.0 Status `D:\Dropbox\Julia\self_learn\Project.tom
(@1.6) pkg> activate .
(self_learn) pkg> st
Project self_learn v0.1.0
Status `D:\Dropbox\Julia\self_learn\Project.toml` (empty project)
(self_learn) pkg> add CSV
Resolving package versions...
Updating `D:\Dropbox\Julia\self_learn\Project.toml`
[336ed68f] + CSV v0.8.4
Updating `D:\Dropbox\Julia\self_learn\Manifest.toml`
[336ed68f] + CSV v0.8.4
[9a962f9c] + DataAPI v1.6.0
[e2d170a0] + DataValueInterfaces v1.0.0
[82899510] + IteratorInterfaceExtensions v1.0.0
[69de0a69] + Parsers v1.1.0
[2dfb63ee] + PooledArrays v1.2.1
[91c51154] + SentinelArrays v1.2.16
[3783bdb8] + TableTraits v1.0.1
[bd369af6] + Tables v1.4.2
[2a0f44e3] + Base64
[ade2ca70] + Dates
[9fa8497b] + Future
[b77e0a4c] + InteractiveUtils
[8f399da3] + Libdl
[37e2e46d] + LinearAlgebra
[56ddb016] + Logging
[d6f4376e] + Markdown
[a63ad114] + Mmap
[de0858da] + Printf
[9a3f8284] + Random
[9e88b42a] + Serialization
[8dfed614] + Test
[4ec0a83e] + Unicode
Precompiling project...
Progress [> ] 0/1
◑ self_learn
┌ Error: Pkg.precompile error
│ exception =
│ ArgumentError: Invalid header in cache file C:\Users\Admin\.julia\compiled\v1.6\self_learn\jl_A3B4.tmp.
│ Stacktrace:
│ [1] preferences_hash(cachefile::String)
│ @ Base .\loading.jl:1478
│ [2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IOBuffer, internal_stdout::Base.DevNull)
│ @ Base .\loading.jl:1337
│ [3] (::Pkg.API.var"#215#242"{IOBuffer, String, Base.PkgId})()
│ @ Pkg.API C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\API.jl:1144
│ [4] with_logstate(f::Function, logstate::Any)
│ @ Base.CoreLogging .\logging.jl:491
│ [5] with_logger
│ @ .\logging.jl:603 [inlined]
│ [6] macro expansion
│ @ C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\API.jl:1143 [inlined]
│ [7] (::Pkg.API.var"#212#239"{Bool, Vector{Task}, Pkg.API.var"#handle_interrupt#231"{Base.Event, ReentrantLock, Base.TTY}, Pkg.API.var"#color_string#229", Base.Event, Base.Event, ReentrantLock, Vector{Base.PkgId}, Vector{Base.PkgId}, Dict{Base.PkgId, String}, Vector{Base.PkgId}, Vector{Base.PkgId}, Dict{Base.PkgId, Bool}, Dict{Base.PkgId, Base.Event}, Dict{Base.PkgId, Bool}, Dict{Base.UUID, Pkg.Types.PackageEntry}, Vector{Base.PkgId}, Bool, Base.TTY, Base.Semaphore, String, Vector{String}, Vector{Base.PkgId}, Base.PkgId})()
◐ self_learn
(self_learn) pkg>
(@v1.6)pkg>添加CSV
成功添加CSV包。但是,当我激活我的项目环境(称为self\u learn
)并尝试将相同的包添加到此环境中时,我在REPL中看到以下错误消息:
(@1.6) pkg> activate .
(self_learn) pkg> st
Project self_learn v0.1.0
Status `D:\Dropbox\Julia\self_learn\Project.toml` (empty project)
(self_learn) pkg> add CSV
Resolving package versions...
Updating `D:\Dropbox\Julia\self_learn\Project.toml`
[336ed68f] + CSV v0.8.4
Updating `D:\Dropbox\Julia\self_learn\Manifest.toml`
[336ed68f] + CSV v0.8.4
[9a962f9c] + DataAPI v1.6.0
[e2d170a0] + DataValueInterfaces v1.0.0
[82899510] + IteratorInterfaceExtensions v1.0.0
[69de0a69] + Parsers v1.1.0
[2dfb63ee] + PooledArrays v1.2.1
[91c51154] + SentinelArrays v1.2.16
[3783bdb8] + TableTraits v1.0.1
[bd369af6] + Tables v1.4.2
[2a0f44e3] + Base64
[ade2ca70] + Dates
[9fa8497b] + Future
[b77e0a4c] + InteractiveUtils
[8f399da3] + Libdl
[37e2e46d] + LinearAlgebra
[56ddb016] + Logging
[d6f4376e] + Markdown
[a63ad114] + Mmap
[de0858da] + Printf
[9a3f8284] + Random
[9e88b42a] + Serialization
[8dfed614] + Test
[4ec0a83e] + Unicode
Precompiling project...
Progress [> ] 0/1
◑ self_learn
┌ Error: Pkg.precompile error
│ exception =
│ ArgumentError: Invalid header in cache file C:\Users\Admin\.julia\compiled\v1.6\self_learn\jl_A3B4.tmp.
│ Stacktrace:
│ [1] preferences_hash(cachefile::String)
│ @ Base .\loading.jl:1478
│ [2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IOBuffer, internal_stdout::Base.DevNull)
│ @ Base .\loading.jl:1337
│ [3] (::Pkg.API.var"#215#242"{IOBuffer, String, Base.PkgId})()
│ @ Pkg.API C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\API.jl:1144
│ [4] with_logstate(f::Function, logstate::Any)
│ @ Base.CoreLogging .\logging.jl:491
│ [5] with_logger
│ @ .\logging.jl:603 [inlined]
│ [6] macro expansion
│ @ C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\API.jl:1143 [inlined]
│ [7] (::Pkg.API.var"#212#239"{Bool, Vector{Task}, Pkg.API.var"#handle_interrupt#231"{Base.Event, ReentrantLock, Base.TTY}, Pkg.API.var"#color_string#229", Base.Event, Base.Event, ReentrantLock, Vector{Base.PkgId}, Vector{Base.PkgId}, Dict{Base.PkgId, String}, Vector{Base.PkgId}, Vector{Base.PkgId}, Dict{Base.PkgId, Bool}, Dict{Base.PkgId, Base.Event}, Dict{Base.PkgId, Bool}, Dict{Base.UUID, Pkg.Types.PackageEntry}, Vector{Base.PkgId}, Bool, Base.TTY, Base.Semaphore, String, Vector{String}, Vector{Base.PkgId}, Base.PkgId})()
◐ self_learn
(self_learn) pkg>
添加其他包,如DataFrames
和Pipe
会导致相同的预编译错误。我已尝试卸载并重新安装Julia 1.6.1,但此问题仍然存在。我正在使用Windows10
任何帮助都将不胜感激。您模块的软件包缓存似乎已停止。 这最有可能发生在您为模块安装软件包时,并点击
Ctrl+Enter
——软件包回购通常无法很好地生存
卸载Julia没有帮助,因为包repo保存在独立于Julia安装的~/.Julia
(或Windows上的%HOME%\.Julia
)文件夹中
您需要做的只是删除文件夹:C:\Users\Admin\.julia\compiled\v1.6\self\u learn\
如果这没有帮助,您可能需要安装整个
C:\Users\Admin\
,但这需要重新安装所有软件包。我以前解决此问题的一次尝试是删除整个文件夹C:\Users\Admin\.julia
,但没有成功。现在,我意识到我一直在以错误的方式创建我的Julia环境,至少是出于我的目的。我需要生成一个包而不是环境。我按照这里的说明操作:https://pkgdocs.julialang.org/v1/environments/
而不是https://pkgdocs.julialang.org/v1/creating-packages/
现在我可以将包添加到项目环境中。谢谢你的指点和时间来帮助我。