gpt4 book ai didi

docker - 我应该如何将 Julia 包持久保存在 Docker 容器中

转载 作者:行者123 更新时间:2023-12-02 18:03:27 25 4
gpt4 key购买 nike

我在 raspberry pi 4 上运行 Julia。对于我正在做的事情,我需要 Julia 1.5,幸好这里有一个 docker 镜像:https://github.com/Julia-Embedded/jlcross
我的挑战是,因为这是一个正在进行的开发,我发现自己在工作时到处添加包。持久保存更新环境的最佳方法是什么?
这是我的问题:

  • 我很难在卷上思考如何从 Julia 的包管理器中保存包并在我下次运行容器时保留它们
  • 每次安装包时都以某种方式提交我的 docker 容器似乎很笨拙。

  • 是否对最佳方式达成共识,或者可能有另一种方式来做我想做的事情?

    最佳答案

    您可以通过 Julia Project.toml 管理软件包及其版本。文件。
    此文件可以同时保留您的依赖项列表。
    这是一个示例 Julia session :

    julia> using Pkg

    julia> pkg"generate MyProject"
    Generating project MyProject:
    MyProject\Project.toml
    MyProject\src/MyProject.jl

    julia> cd("MyProject")

    julia> pkg"activate ."
    Activating environment at `C:\Users\pszufe\myp\MyProject\Project.toml`

    julia> pkg"add DataFrames"
    现在最后一步是向您的 Project.toml 提供软件包版本信息文件。我们首先检查“运行良好”的版本号:
    julia> pkg"st DataFrames"
    Project MyProject v0.1.0
    Status `C:\Users\pszufe\myp\MyProject\Project.toml`
    [a93c6f00] DataFrames v0.21.7
    现在要编辑 Project.toml文件 [compat]将该版本号固定为 v0.21.7 :
    name = "MyProject"
    uuid = "5fe874ab-e862-465c-89f9-b6882972cba7"
    authors = ["pszufe <pszufe@******.com>"]
    version = "0.1.0"

    [deps]
    DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"

    [compat]
    DataFrames = "= 0.21.7"
    请注意,在最后一行中,相等运算符是两次以修复确切的版本号,另请参见 https://julialang.github.io/Pkg.jl/v1/compatibility/ .
    现在,为了重用该结构(例如,不同的 docker,在系统之间移动等),您要做的就是
    cd("MyProject")
    using Pkg
    pkg"activate ."
    pkg"instantiate"
    附加说明
    也看看 JULIA_DEPOT_PATH变量( https://docs.julialang.org/en/v1/manual/environment-variables/ )。
    当在这里和那里的 docker 之间移动安装时,有时也可以方便地控制所有包的实际安装位​​置。例如,您可能想要复制 JULIA_DEPOT_PATH在 2 个安装了相同 Julia 的 docker 之间创建一个文件夹,以避免在安装包上花费的时间,或者您可以构建没有 Internet 连接的 Docker 镜像等。

    关于docker - 我应该如何将 Julia 包持久保存在 Docker 容器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64093674/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com