如何运行Julia项目?

12

目前我对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>

然后通过按退格键离开管理器。 不过还不确定如何“运行”所有内容。

2个回答

10

你离解决方案非常接近!如果所有文件都在一个名为 dir 的目录中,那么命令将是:

julia --project=dir main.jl

您还可以在该环境中启动交互式会话,然后通过以下方式运行文件中的代码:

您也可以在该环境中启动交互式会话,然后通过以下方式运行文件中的代码:

julia --project=dir

julia> include(“main.jl”)

编辑: 如果目录是当前工作目录,那么您可以直接使用 --project=.


原来脚本没有立即运行的设置。在像这个答案中包含后,我需要调用我想要运行的函数,例如 julia> main("some string", SomeConstant) - Toby
`$ julia --project=. ./src/main.jl ERROR: LoadError: ArgumentError: Package Pluto [c3e4b0f8-55cb-11ea-2926-15256bba5781] is required but does not seem to be installed:
  • Run 'Pkg.instantiate()' to install all recorded dependencies.`
- Felix B.

0
错误信息在当前路径中找不到JSON包意味着您没有安装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> 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接