【问题标题】:Julia using package located in .julia/devJulia 使用位于 .julia/dev 中的包
【发布时间】:2020-10-07 04:11:38
【问题描述】:

虽然我有 Python 和其他一些语言的经验,但我是 Julia 的初学者。我知道这可能是一个非常简单/初学者的问题,但我不明白它应该如何在 Julia 中工作。

我想创建一个 Julia 模块。我看到了使用PkgTemplates 创建它的建议,所以这正是我所做的。我的目录结构是这样的:

位于PkgTemplates建议的默认路径:/home/username/.julia/dev/Keras2Flux

由于 Julia REPL 的启动时间很慢,我想用 Revise 包开发它。但是,我无法将我的模块导入终端中的 Julia REPL。

所以,我cd 到上面提到的目录,使用julia 命令并尝试using Keras2Flux。我得到了错误:

ERROR: ArgumentError: Package Keras2Flux not found in current path:

我尝试了using Keras2Fluxusing Keras2Flux.jl,还尝试从我的目录结构中的上一层调用它(即/home/username/.julia/dev)。所有人都有同样的问题。

出了什么问题(更重要的是,为什么?)以及如何解决?

模块的当前内容(与问题无关,但仍然):

module Keras2Flux

import JSON
using Flux

export convert

function create_dense(config)
    in = config["input_dim"]
    out = config["output_dim"]
    dense = Dense(in, outо)
    return dense
end

function create_dropout(config)
    p = config["p"]
    dropout = Dropout(p)
    return dropout
end

function create_model(model_config)
    layers = []
    for layer_config in model_config
        if layer_config["class_name"] == "Dense"
            layer = create_dense(layer_config["config"])
        elseif layer_config["class_name"] == "Dropout"
            layer = create_dropout(layer_config["config"])
        else
            println(layer_config["class_name"])
            throw("unimplemented")
        end
        push!(layers, layer)
    end
    model = Chain(layers)
end

function convert(filename)
    jsontxt = ""
    open(filename, "r") do f
        jsontxt = read(f, String)  
    end
    model_params = JSON.parse(jsontxt)  
    if model_params["keras_version"] == "1.1.0"
        create_model(model_params["config"])
    else
        throw("unimplemented")
    end
end

end

【问题讨论】:

  • 你有没有cded 进入包目录,] activate . 在那里?

标签: module julia


【解决方案1】:

这里有一个完整的食谱可以帮助你:

cd("/home/username/.julia/dev")
using Pkg
pkg"generate Keras2Flux"
cd("Keras2Flux")
pkg"activate ."
pkg"add JSON Flux"
# now copy-paste whatever you need to Keras2Flux\src\Keras2Flux.jl
using Revise
using Keras2Flux
# happy development!

【讨论】:

  • 确实有效。谢谢你。附带说明一下,我怎样才能将此模块导入另一个脚本?我尝试按照stackoverflow.com/questions/37200025/…(即include("../src/Keras2Flux.jl")using Keras2Flux 的说明进行操作,但尽管使用了include,但我收到Package Keras2Flux not found in current path 错误。
  • pkg"activate /home/username/.julia/dev/Keras2Flux";using Keras2Flux。当您有多个未注册的模块时,问题就开始了。基本上,在这种情况下,最好的办法是将每个模块保留为单独的 GitHub 存储库 - 但如果您需要它是一个新问题的主题。
  • 那么,在 Julia 中使用未注册的模块不是一个好的工作流程吗?在 Python 中,我只需将它们的位置添加到路径中,以防我不想将其保留为单独的存储库。
  • 好的工作流程是将每个模块作为私有或公共的 GitHub 存储库。公共回购的工作流程显然更方便/更容易。使用已注册的模块,如果有更多的依赖项,则管理依赖项会容易得多。
  • 如果您是一家软件公司并正在开发专有的非开源 Julia 解决方案,那么您需要设置自己的包注册表julialang.github.io/Pkg.jl/v1.1/registries 据我所知 JuliaPro 付费工具可以减少您这样做的工作量(但并非严格要求)
猜你喜欢
  • 1970-01-01
  • 2018-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-01
  • 1970-01-01
相关资源
最近更新 更多