如何生成依赖于 ForwardDiff 的 Julia 包(例如)?
我正在尝试在 Julia 中创建一个具有依赖项的包,但失败了。我正在尝试遵循官方文档here。我的最小非工作示例如下。我在 Jupyter Lab 中输入这些命令,我使用的是 Julia 1.9.3。
如果你不想阅读所有这些,我所做的就是使用 Pkg 的
generate
命令生成一个空项目 Foo
。然后,我将 using ForwardDiff
添加到 Foo.jl
,并通过 ]add ForwardDiff
添加 ForwardDiff 作为依赖项。我已经 activate
Foo 和一切了。一旦我using Foo
,我就会收到错误消息。我无法修复它。
我知道PkgTemplates。我试过了,同样的问题。
]generate Foo
Generating project Foo:
Foo/Project.toml
Foo/src/Foo.jl
]activate Foo
Activating project at `~/.../Foo`
]add ForwardDiff
Resolving package versions...
Updating `~/.../Foo/Project.toml`
[f6369f11] + ForwardDiff v0.10.36
...
;cat Foo/src/Foo.jl
module Foo
using ForwardDiff
greet() = print("Hello World!")
end # module Foo
> using Foo
[ Info: Precompiling Foo [b793ecfc-1afd-4979-b49f-7079086f47c4]
ERROR: LoadError: ArgumentError: Package ForwardDiff [f6369f11-7733-5829-9624-2563aa707210] is required but does not seem to be installed:
- Run `Pkg.instantiate()` to install all recorded dependencies.
> using Pkg; Pkg.instantiate()
Precompiling project...
✗ Foo
0 dependencies successfully precompiled in 1 seconds. 19 already precompiled.
1 dependency errored. To see a full report either run `import Pkg; Pkg.precompile()` or load the package
...
]resolve
No Changes to `~/Dropbox/2023/Spectral Barrier Method/julia/Foo/Project.toml`
No Changes to `~/Dropbox/2023/Spectral Barrier Method/julia/Foo/Manifest.toml`
]instantiate
(nothing happens)
> using Foo
[ Info: Precompiling Foo [b793ecfc-1afd-4979-b49f-7079086f47c4]
ERROR: LoadError: ArgumentError: Package ForwardDiff [f6369f11-7733-5829-9624-2563aa707210] is required but does not seem to be installed:
- Run `Pkg.instantiate()` to install all recorded dependencies.
...
我还尝试过各种内核重启,试图让 Julia 做一些不同的事情。根据重新启动的次数和时间,您会收到不同的错误消息。
在 Julia 讨论板上找到了解决方案。
解决方案是由几个人找到的,我归功于 nasjko。我的主要问题是 LOAD_PATH 和 JULIA_LOAD_PATH 可能会以令人困惑的方式与包加载交互,并且显然不鼓励使用它们。我有。在我的 JULIA_LOAD_PATH 中。一旦我从路径中删除它,我就能做到
。详细信息请参阅下面的主题。using MyPackage
https://discourse.julialang.org/t/streamlined-way-of-making-a-package/104682/3