我的主目录中有一个名为 Foo
的 Julia 包. Foo 是一个带有 Project.toml
的目录描述包依赖关系、名称等的文件。我希望能够以如下特定方式从另一个文件夹中使用这个包。
Foo
Foo
在本地 Julia 存储库中 Pkg.add("Foo")
来自系统上的任何位置,例如 script.jl,它将具有以下内容:using Pkg
Pkg.add("Foo")
using Foo
# Now use Foo
Foo.bar()
这是我到目前为止所尝试的。
Baz
我要运行的目录Baz/script.jl
repl
,点击]
并运行 dev --local PATH_TO_FOO
repl
, 运行 using Foo
Foo
现在可以在当前 repl
中访问 session (或脚本)Foo
在另一个目录Baz
. 基本上,我希望能够写一个
script.jl
可以使用本地注册表而不是 dev --local .
方法。
最佳答案
我假设这是供个人使用的,您不是大型团体的系统管理员。
维护注册表是一项艰巨的工作。如果可能的话,我会避免创建注册表。如果您的目标是减少使用脚本的痛苦,那么存在一个更轻松的解决方案:共享环境。
一个 共享环境 是在规范位置创建的常规环境。这意味着 Pkg
将能够通过名称找到它:您不必指定显式路径。
要设置共享环境:
Pkg.activate("ScriptEnvironment"; shared=true)
Pkg.add(Pkg.PackageSpec(; path="/path/to/Foo"))
(根据您的用例,您还可以使用 Pkg.develop
,添加注册包等)现在您的所有脚本都可以使用共享环境:
using Pkg
Pkg.activate("ScriptEnvironment"; shared=true)
using Foo
如果其他脚本集需要不同的包集,请使用不同的共享名称重复该过程。
Pkg
环境真的很便宜,所以随意自由地使用这种方法。注意:我不鼓励以
Pkg.add("Foo")
开头的脚本。因为这会带来无意中污染事件环境的风险。
关于package - 如何在本地注册表中注册本地 Julia 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57965361/