如何 运行 一个 Julia 项目?
How to run a Julia project?
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' s 需求文件)。
我试过julia --project=main.jl
,但这只会导致 REPL 再次加载而没有任何反应(不确定是否加载了任何项目或环境)。
我如何告诉 Julia 运行 这个项目中的脚本,同时记下 TOML 文件中的要求和其他信息?
更新:
想通了在REPL输入]
进入pkg
包管理器。那我可以:
(v1.3) pkg> activate .
Activating environment at `~/myproject/Project.toml`
(myproject) pkg> instantiate
(myproject) pkg>
然后按退格键离开经理。
仍然不确定如何 "run" 一切。
您已经非常接近解决方案了!如果文件都在目录 dir
中,则命令为
julia --project=dir main.jl
您也可以在该环境中启动交互式会话,然后通过
运行文件中的代码
julia --project=dir
julia> include(“main.jl”)
编辑:如果目录是当前工作目录,那么你可以直接使用--project=.
错误消息 Package JSON not found in current path
暗示您没有安装 JSON。
您可以通过启动 Julia 并输入 using JSON
来检查这一点
要安装 JSON,您只需编写 import Pkg; Pkg.add("JSON")
例如,查看此输出:
$ julia
_
_ _ _(_)_ | Documentation: https://docs.julialang.org
(_) | (_) (_) |
_ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help.
| | | | | | |/ _` | |
| | |_| | | | (_| | | Version 1.5.2 (2020-09-23)
_/ |\__'_|_|_|\__'_| | Official https://julialang.org/ release
|__/ |
julia> using JSON
ERROR: 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:893
julia> import Pkg; Pkg.add("JSON")
Updating registry at `~/.julia/registries/General`
Updating git-repo `https://github.com/JuliaRegistries/General.git`
Resolving package versions...
Updating `~/.julia/environments/v1.5/Project.toml`
[682c06a0] + JSON v0.21.1
Updating `~/.julia/environments/v1.5/Manifest.toml`
[682c06a0] + JSON v0.21.1
[69de0a69] + Parsers v1.1.0
[ade2ca70] + Dates
[a63ad114] + Mmap
[de0858da] + Printf
[4ec0a83e] + Unicode
julia> using JSON
[ Info: Precompiling JSON [682c06a0-de6a-54ab-a142-c8b1cf79cde6]
julia>
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' s 需求文件)。
我试过julia --project=main.jl
,但这只会导致 REPL 再次加载而没有任何反应(不确定是否加载了任何项目或环境)。
我如何告诉 Julia 运行 这个项目中的脚本,同时记下 TOML 文件中的要求和其他信息?
更新:
想通了在REPL输入]
进入pkg
包管理器。那我可以:
(v1.3) pkg> activate .
Activating environment at `~/myproject/Project.toml`
(myproject) pkg> instantiate
(myproject) pkg>
然后按退格键离开经理。 仍然不确定如何 "run" 一切。
您已经非常接近解决方案了!如果文件都在目录 dir
中,则命令为
julia --project=dir main.jl
您也可以在该环境中启动交互式会话,然后通过
运行文件中的代码julia --project=dir
julia> include(“main.jl”)
编辑:如果目录是当前工作目录,那么你可以直接使用--project=.
错误消息 Package JSON not found in current path
暗示您没有安装 JSON。
您可以通过启动 Julia 并输入 using JSON
要安装 JSON,您只需编写 import Pkg; Pkg.add("JSON")
例如,查看此输出:
$ julia
_
_ _ _(_)_ | Documentation: https://docs.julialang.org
(_) | (_) (_) |
_ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help.
| | | | | | |/ _` | |
| | |_| | | | (_| | | Version 1.5.2 (2020-09-23)
_/ |\__'_|_|_|\__'_| | Official https://julialang.org/ release
|__/ |
julia> using JSON
ERROR: 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:893
julia> import Pkg; Pkg.add("JSON")
Updating registry at `~/.julia/registries/General`
Updating git-repo `https://github.com/JuliaRegistries/General.git`
Resolving package versions...
Updating `~/.julia/environments/v1.5/Project.toml`
[682c06a0] + JSON v0.21.1
Updating `~/.julia/environments/v1.5/Manifest.toml`
[682c06a0] + JSON v0.21.1
[69de0a69] + Parsers v1.1.0
[ade2ca70] + Dates
[a63ad114] + Mmap
[de0858da] + Printf
[4ec0a83e] + Unicode
julia> using JSON
[ Info: Precompiling JSON [682c06a0-de6a-54ab-a142-c8b1cf79cde6]
julia>