在项目虚拟环境中添加包时发生Pkg.precompile错误(Julia)

在项目虚拟环境中添加包时发生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

我来自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.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/
现在我可以将包添加到项目环境中。谢谢你的指点和时间来帮助我。