【问题标题】:How to run a Julia project?如何运行 Julia 项目?
【发布时间】:2020-03-16 17:29:31
【问题描述】:

Julia 还没有在我的驾驶室里,但我已经接到了一个 Julia 项目来运行其中的代码。 这由一个包含main.jlProject.tomlManifest.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 toml


    【解决方案1】:

    您非常接近解决方案!如果文件都在dir 目录中,那么命令将是

    julia --project=dir main.jl
    

    您还可以在该环境中启动交互式会话,然后通过

    运行文件中的代码
    julia --project=dir
    
    julia> include(“main.jl”)
    

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

    【讨论】:

    • 原来脚本没有设置为立即运行。 之后 includeing 在这个答案中,我需要调用我想要运行的函数,例如julia&gt; main("some string", SomeConstant).
    • $ 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.
    【解决方案2】:

    错误消息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> 
    

    【讨论】:

      猜你喜欢
      • 2020-11-16
      • 2011-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-30
      • 1970-01-01
      相关资源
      最近更新 更多