【Julia语言入门】 01快速创建julia项目
1 Julia语言概述
根据百度百科定义,Julia 是一个面向科学计算的高性能动态高级程序设计语言。其语法与其他科学计算语言相似。在许多情况下拥有能与编译型语言相媲美的性能。Julia 是个灵活的动态语言,适合科学和数值计算,性能可与传统静态类型语言媲美。 Julia是一个免费、开源和跨平台的软件,它具备C语言一般的速度,又拥有Ruby语言的动态性,同时也具有类似Lisp语言的宏以及元编程工具。官网地址为 https://julialang.org
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)。具体安装过程这里不再赘述。
3 Julia项目创建
Julia 项目本质上是一个目录,其中包含若干文件以及子目录。我们可以在根目录中打开CMD窗口,输入如下命令开启Julia REPL模式:
julia --project=.
然后按键盘上的 】 符号,切换到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作为单元测试的入口文件,本项目的目录结构如下所示 :
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
- 点赞
- 收藏
- 关注作者
评论(0)