目前我对Julia还不熟悉,但我被交付了一个Julia项目来运行其中的代码。
这个项目包含一个目录,其中有一个main.jl
文件,一个Project.toml
文件和一个Manifest.toml
文件。
我已经了解了一些关于TOML文件的信息;总结一下我的当前理解是,它们构成了一个项目或环境(不确定是哪一个,或者真正的区别是什么)。
我通过下载tar文件、解压并将其放置在路径中,在命令行中安装了Julia v1.3.1。在命令行中输入julia
会打开Julia CLI REPL。
我尝试使用julia main.jl
运行代码,结果提示缺少所需的软件包,例如:
julia main.jl
ERROR: LoadError: ArgumentError: Package JSON not found in current path:
- Run `import Pkg; Pkg.add("JSON")` to install the JSON package.
Stacktrace:
[1] require(::Module, ::Symbol) at ./loading.jl:887
[2] include at ./boot.jl:328 [inlined]
[3] include_relative(::Module, ::String) at ./loading.jl:1105
[4] include(::Module, ::String) at ./Base.jl:31
[5] exec_options(::Base.JLOptions) at ./client.jl:287
[6] _start() at ./client.jl:460
in expression starting at /home/<user>/myproject/main.jl:3
我可以按照这里的说明加载所需的软件包,但肯定不应该为每个包手动执行此操作。由于Project.toml
中列出了所需的每个包,我想应该有一种方法告诉Julia确保在项目中提供这些软件包(我认为类似于Python的要求文件)。我尝试过
julia --project=main.jl
,但这只会导致REPL再次加载,没有发生任何事情(不确定是否加载了任何项目或环境)。如何告诉Julia在考虑TOML文件中的要求和其他信息的同时运行此项目中的脚本? 更新: 已经解决了在REPL中输入
]
以进入pkg
软件包管理器。然后我可以:(v1.3) pkg> activate .
Activating environment at `~/myproject/Project.toml`
(myproject) pkg> instantiate
(myproject) pkg>
然后通过按退格键离开管理器。 不过还不确定如何“运行”所有内容。
julia> main("some string", SomeConstant)
。 - Toby