我的主目录中有一个Julia包,名称为Foo。Foo是一个包含Project.toml文件的目录,该文件描述了程序包的依赖性,名称等。我希望能够以特殊方式使用另一个文件夹中的程序包,如下所示。
FooFoo在本地Julia库中注册Pkg.add("Foo")从系统上的任何位置运行,例如script.jl,它将具有以下内容:using Pkg
Pkg.add("Foo")
using Foo
# Now use Foo
Foo.bar()
Run Code Online (Sandbox Code Playgroud)
到目前为止,这是我尝试过的。
Baz我要运行的目录Baz/script.jlrepl,点击]并运行dev --local PATH_TO_FOOrepl开始using FooFoo现在可以在当前repl会话(或脚本)中访问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
Run Code Online (Sandbox Code Playgroud)
如果其他脚本集需要不同的软件包集,请使用不同的共享名重复该过程。Pkg环境确实很便宜,因此可以随意使用此方法。
注意:我不建议使用开头的脚本,Pkg.add("Foo")因为这样做会冒着无意中污染活动环境的风险。