美文网首页
julia 的包、模块管理(julia如何导入自己编写的本地模块

julia 的包、模块管理(julia如何导入自己编写的本地模块

作者: mudssky | 来源:发表于2021-07-06 12:47 被阅读0次

    jullia中的模块导入的语句主要有两种

    下面是一个模块的例子

        module MyModule
    
        export x, y
    
        x() = "x"
        y() = "y"
        p() = "p"
    
        end
    

    使用module定义一个模块,module和end的区间就是一个命名空间了。

    导入一个模块有两种关键字 using和import

    这两个关键词的区别是,import更像我们平时那个模块。就像python的import

    下面是几种导入方式差异的表格

    导入代码 当前作用域导入了哪些变量? 可增加新方法的名字
    using MyModule All exported names (x and y), MyModule.x, MyModule.y and MyModule.p MyModule.x, MyModule.y and MyModule.p
    using MyModule: x, p x and p
    import MyModule MyModule.xMyModule.yMyModule.p MyModule.xMyModule.yMyModule.p
    import MyModule.x, MyModule.p xp xp
    import MyModule: x, p xp xp

    using相当于把模块里面的全局变量全部导入了,最终的导入是以全局变量的形式,相当于python的from xxx import *

    而 import则是作为一个命名空间导入,这样你就可以mymodule.x这样来调用了,并且import是和export对应的。

    另外import还有一个关键的地方是,可以你修改import导入的变量,但是你不能修改using的变量

    这两个模块导入的方式,并不适用于你在本地编写代码。因为julia的包导入是到他自己的路径里去寻找模块的。

    所以除非你在他指定的path里写模块,不然是不能导入的。

    模块文件路径

    全局变量 LOAD_PATH 包含了调用 require 时 Julia搜索模块的目录。可以用 push! 进行扩展 :

        push!(LOAD_PATH, "/Path/To/My/Module/")
    

    将这一段代码放在 ~\.juliarc.jl 里能够在每次 Julia启动时对 LOAD_PATH 扩展。此外,还可以通过定义环境变量 JULIA_LOAD_PATH 来扩展 Julia 的模块路径。

    扩展模块路径到你写的模块的位置之后,就可以使用import或者using正常导入了。

    这点就有点像go语言了,早期也有类似的限制,就是代码必须放到GOPATH里面。但是后面有了go mod 用作包管理之后,只要用go mod初始化过在任何目录都能正常使用包管理了。

    include

    正常我们用include就差不多了

    include相当于代码拼接,你导入的代码会在include的位置执行。

    include("mycode.jl")
    

    就比较简单易用了。

    include可以正常使用相对路径之类的,vscode上也支持路径补全。

    相关文章

      网友评论

          本文标题:julia 的包、模块管理(julia如何导入自己编写的本地模块

          本文链接:https://www.haomeiwen.com/subject/zmkgultx.html