【Julia语言入门】 01快速创建julia项目

举报
jackwangcumt 发表于 2023/01/04 16:23:11 2023/01/04
【摘要】 根据百度百科定义,Julia 是一个面向科学计算的高性能动态高级程序设计语言。其语法与其他科学计算语言相似。在许多情况下拥有能与编译型语言相媲美的性能。Julia 是个灵活的动态语言,适合科学和数值计算,性能可与传统静态类型语言媲美。 Julia是一个免费、开源和跨平台的软件,它具备C语言一般的速度,又拥有Ruby语言的动态性,同时也具有类似Lisp语言的宏以及元编程工具。

1 Julia语言概述


      根据百度百科定义,Julia 是一个面向科学计算的高性能动态高级程序设计语言。其语法与其他科学计算语言相似。在许多情况下拥有能与编译型语言相媲美的性能。Julia 是个灵活的动态语言,适合科学和数值计算,性能可与传统静态类型语言媲美。 Julia是一个免费、开源和跨平台的软件,它具备C语言一般的速度,又拥有Ruby语言的动态性,同时也具有类似Lisp语言的宏以及元编程工具。官网地址为 https://julialang.org

01.jpg

2 Julia开发环境搭建


      Julia 支持多种平台,可以在Windows、Linux和MacOS等上运行。这里以Windows为例,可以从官网https://julialang-s3.julialang.org/bin/winnt/x64/1.8/julia-1.8.4-win64.exe 进行下载。然后双击安装即可。开发工具可以采用Visual Studio Code,并安装相关julia插件(下图来自https://www.julia-vscode.org)。具体安装过程这里不再赘述。

02.png

3 Julia项目创建


      Julia 项目本质上是一个目录,其中包含若干文件以及子目录。我们可以在根目录中打开CMD窗口,输入如下命令开启Julia  REPL模式:

julia --project=.

03.jpg
然后按键盘上的 】 符号,切换到pkg包管理模式,输入 generate myproject 创建名为myproject的项目,具体命令如下:

(julia_src) pkg> generate myproject
 Generating  project myproject:
    myproject\Project.toml
    myproject\src/myproject.jl

(julia_src) pkg>              

可以看出,generate myproject命令会在当前目录下自动创建一个项目目录myproject,且生成一个Project.toml 文件以及src源码目录下的myproject.jl 文件。新创建的项目需要激活,pkg包管理模式下 输入分号; 进入shell模式,然后切换到myproject目录下,再输入] 进入pkg包管理模式,并输入 activate .   (注意有个点,表示当前目录),就激活当前myproject文件夹下的项目配置(注意 (myproject) pkg> )。

(julia_src) pkg> ;

shell> cd myproject\\
C:\julia_src\myproject

julia> pwd()
"C:\\julia_src\\myproject"

julia>  ]               
(julia_src) pkg> activate .
 Activating environment at `C:\julia_src\myproject\Project.toml`

(myproject) pkg>  

输入 add Test 添加Test包,这样就可以进行单元测试,如下所示:

(myproject) pkg> add Test
  Installing known registries into `C:\Users\wangming\.julia`
┌ Warning: could not download https://pkg.julialang.org/registries
│   exception = HTTP/1.1 502 Bad Gateway while requesting https://pkg.julialang.org/registries
└ @ Pkg.Registry C:\workdir\usr\share\julia\stdlib\v1.8\Pkg\src\Registry\Registry.jl:68
┌ Warning: could not download https://pkg.julialang.org/registries
│   exception = HTTP/1.1 502 Bad Gateway while requesting https://pkg.julialang.org/registries
└ @ Pkg.Registry C:\workdir\usr\share\julia\stdlib\v1.8\Pkg\src\Registry\Registry.jl:68
     Cloning registry from "https://github.com/JuliaRegistries/General.git"
       Added registry `General` to `C:\Users\wangming\.julia\registries\General`
┌ Warning: could not download https://pkg.julialang.org/registries
│   exception = HTTP/1.1 502 Bad Gateway while requesting https://pkg.julialang.org/registries
└ @ Pkg.Registry C:\workdir\usr\share\julia\stdlib\v1.8\Pkg\src\Registry\Registry.jl:68
    Updating registry at `C:\Users\wangming\.julia\registries\General`
    Updating git-repo `https://github.com/JuliaRegistries/General.git`
   Resolving package versions...
    Updating `C:\julia_src\myproject\Project.toml`
  [8dfed614] + Test
    Updating `C:\julia_src\myproject\Manifest.toml`
  [2a0f44e3] + Base64
  [b77e0a4c] + InteractiveUtils
  [56ddb016] + Logging
  [d6f4376e] + Markdown
  [9a3f8284] + Random
  [ea8e919c] + SHA v0.7.0
  [9e88b42a] + Serialization
  [8dfed614] + Test
Precompiling project...
  1 dependency successfully precompiled in 1 seconds

(myproject) pkg> 

此时也会在项目目录下生成Manifest.toml文件,这里用于描述相关依赖包的信息,其中包括julia的版本,Manifest的版本,还有项目里使用了的包的校验码和依赖关系等。一般来说,Manifest.toml和Project.toml不建议手动修改。

如果提示如下SystemError错误:

(myproject) pkg> add Test
   Updating registry at `C:\Users\wangming\.julia\registries\General`
ERROR: SystemError: opening file "C:\\Users\\wangming\\AppData\\Local\\Temp\\jl_1P0B4vOL0p": No such file or directory
Stacktrace:
 [1] systemerror(::String, ::Int32; extrainfo::Nothing) at .\error.jl:168

则可能需要手动调整,其中手动删除pkgs\registries\General目录下的文件,或重新安装Julia软件包,并配置PATH环境变量。

下面可以修改项目源码文件,并创建一个test目录以及在其目录下创建runtests.jl作为单元测试的入口文件,本项目的目录结构如下所示 : 

05.jpg

myproject.jl 示例代码如下所示:

module myproject

function sum(a,b) 
    return a + b
end

function mul(a,b) 
    return a * b
end

export sum

end # module

runtests.jl 示例代码如下所示:

using Test
using myproject

@testset "runtests.jl" begin
    @test myproject.sum(2,3) == 5
    @test myproject.mul(2,3) == 6
end

输入test进行测试,输出如下所示:

(myproject) pkg> test
     Testing myproject
      Status `C:\Users\wangming\AppData\Local\Temp\jl_M4Rr0C\Project.toml`
  [a46f0acf] myproject v0.1.0 `C:\julia_src\myproject`
  [8dfed614] Test `@stdlib/Test`
      Status `C:\Users\wangming\AppData\Local\Temp\jl_M4Rr0C\Manifest.toml`
  [a46f0acf] myproject v0.1.0 `C:\julia_src\myproject`
  [2a0f44e3] Base64 `@stdlib/Base64`
  [b77e0a4c] InteractiveUtils `@stdlib/InteractiveUtils`
  [56ddb016] Logging `@stdlib/Logging`
  [d6f4376e] Markdown `@stdlib/Markdown`
  [9a3f8284] Random `@stdlib/Random`
  [ea8e919c] SHA v0.7.0 `@stdlib/SHA`
  [9e88b42a] Serialization `@stdlib/Serialization`
  [8dfed614] Test `@stdlib/Test`
     Testing Running tests...
Test Summary: | Pass  Total  Time
runtests.jl   |    2      2  0.0s
     Testing myproject tests passed
(myproject) pkg> status
Project myproject v0.1.0
Status `C:\julia_src\myproject\Project.toml`
  [8dfed614] Test
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。