学习制作完整的julia包的现代方法?

我写了数千行脚本,但还不会做包,Pkg.jl的文档略长,PackageTemplete.jl略僵化,Example.jl过于简单,然后在论坛里搜索到两个帖子:

还有微分方程大佬的博客:

我准备学习另一位大佬

的两个包:XKCD.jl PlotlyLight.jl,一个五十行,一个一百行,哈哈:joy:,然后制作自己的包,没有什么比新鲜简单实际的例子更好了,各位有更好更现代的方法吗?

看完这个仍不会做完整的包呀,过于简略了,像官方文档一样,属于手册一类了,如果已经在其他语言里有经验,只是不知道用julia怎么做,此时看手册就可以了,但对于编程新手的话,只能说帮助有限 :broken_heart:

这个,所以我不太明白您的问题在哪里……
会用module吗?会用git/github吗?其它我看不出按照文档会有什么问题

1 个赞

我只知道module是用来分离全局变量作用域的,你之前也说过这个Roadmap不需要每个人(比如像我这样的广场舞大妈)都能看懂,我想我还是看pkg.jl的冗长文档吧…

你可以看站主的《一起读文档》,不能说完全懂了,但是我也成功写了自己的包。

下面贴一部分我的笔记(也是我用到的,其它的暂时没碰到就不贴了)


库文件目录:

-src/(源文件)
	-MyModule.jl
-test/(测试)
	-Project.toml(必须的)
	-Manifest.toml(可选)
	-runtests.jl(必须的)
-docs/:(文档,名字可以改,但大家都这么用)
	-Documenter.jl(这是Julia中用得最广的。约定用docs/make.jl作为main文件)
-Manifest.jl(锁版本,可选)
-Project.toml(便于程序员读取的环境管理)
命令说明:

generate MyModule:生成MyModule包的模板。会生成:

  1. Project.toml

    • 对外公布的、高层的环境管理。
    • 程序员能一眼看明白。
  2. MyModule.jl

instantiate:初始化。会额外生成:

  • Manifest.toml
    • 底层信息,不建议使用。
    • 过于冗长。
    • 可以不要。有Project文件就可以生成Manifest文件。
    • 如果需要确保可复现,或者锁住代码版本,那么就可以将Manifest.toml commit 到 git history。

(pkg>) activate .:激活当前文件夹所在的环境(利用Project.toml的内容)

(pkg>) activate test:激活test文件夹的环境。

(pkg>) activate docs:激活docs环境。

上面三个交替使用可以切换环境。

(pkg>) add OtherModule:添加别的包,就会在Project.tomlManifest.toml中添加依赖信息。

1 个赞

谢谢,看来认真写一个prj.toml就行了呀,有信心了!

不是,你要仔细写的是src里的源文件。

至于Project.toml里面的内容,我用VSCode讲,VSCode执行的时候,下面会有终端,目录默认就是当前工作目录。此时你在Pkg管理模式下add XXX,它就自动加进Project.toml里了。

1 个赞