julia的包管理新手入门(After V1.4)

您所在的位置:网站首页 本地安装包在哪里 julia的包管理新手入门(After V1.4)

julia的包管理新手入门(After V1.4)

2024-07-17 02:54| 来源: 网络整理| 查看: 265

喜大普奔,北外镜像上线,使用简单。 julia | 镜像站使用帮助 | 北京外国语大学开源软件镜像站 | BFSU Open Source Mirror

本人julia新手,开始学习时安装包时也遇到很多困难。鉴于新手学习julia遇到最多的困难是包的安装,因此写下自己的理解,希望以下内容对julia新手能略有帮助。 同时本人并不专业,抛砖引玉,希望大神们能够不吝纠正错误,增加内容等,以便帮助众多julia新手跨过包安装这个门槛。

当我们安装包时,会有3个限速步骤。 update registry 同步 Pkg.add 下载源码 pkg.build 下载依赖的二进制文件。 1.julia的package默认存放在哪?

julia的package的源码仓库存是放在github上的一个个项目,可以由任意人员开发。

2.Pkg.Registry

julia官方收录的package,由github上的juliaRegistries中的general 仓库维护。registry其实仅仅是个目录,包名字列表,记录了包的各个版本信息,依赖关系等。windows该列表会下载到个人目录的.julia/registries文件夹中。 每次Pkg.add是会先 update /get-repo 所有的general,然后在registries仓库中查找要安装的包。

最基本的registries是general,默认同步地址是github上的 JuliaRegistries/General项目。在github, 科大,浙大均有此文件可以同步。

Pkg.Registry.add(Pkg.RegistrySpec(url="https://mirrors.zju.edu.cn/julia/registries/General.git"))

该过程会替换掉默认的general。然后每次安装包前的updata general就会改为国内镜像。但注意这仅仅是获取包目录列表的地址改了,Pkg.add下载包源码仍然从默认的github下载。

3. Pkg.add

Pkg.add(“xxx”)会先在resistry先查找该包,找出该包的依赖关系。然后从github xxxx项目下载该包及该包的依赖包。

注意,add仅仅是下载了该xxx在github上的包及依赖包到.julia下的package文件夹。 PkgMirror可以更改获取源码包的地址为国内镜像。

4.Pkg.build

Pkg.add仅仅是下载了包,并未安装。一般来说,纯julia代码写的包,第一次使用时可直接编译。 非纯julia的包则还需要build。build针对是非纯julia包,如GR包。gr是一个底层绘图库,可能是C/C++写的绘图基础设置。GR包是使用julia对gr库的封装。Pkg.add时仅仅是下载了GR包的julia代码部分,并未下载其引用的gr.tar.gz或者gr.exe二进制文件。而在build时,则会下载该gr库的二进制文件。

build过程实际上是运行了包目录下build.jl文件。该build一般是为了解决二进制依赖,当然,也可做任何事情,这取决于build.jl怎么写。一般来说,build.jl过程是下载依赖的二进制底层库,并解压到合适的位置。在build.jl文件中,只给出了gr的链接,大多在github项目的asset部分,存放在s3.amazon AWS云服务器上。实际上国内安装package,遇到的最大问题就在于此,amazon AWS的S3服务器在国内无法访问。

imageimage993×311 85.5 KB 以gr为例,默认下载是github 的asset(实际上是amazon S3服务器)。gr的build文件还提供了其他下载地址,即gr的官网下载。不幸的是,这两个链接国内均难以下载。

设置PkgServer可以更改二进制文件的下载地址。

5.artifacts

artifact为为了解决二进制依赖文件难以下载而设置的。julia官方设置了一个服务器,该server专门用于存放依赖的二进制文件。因此,在build时,下载二进制文件会转为从artifact服务器下载。

artifact的一个好处是可以设置镜像,这解决了下载二进制文件难这个问题。

但是为什么安装GR时依然困难?前面说了,build时干什么取决于build.jl文件怎么写。gr包的下载地址依然是gtihub和官网,而不是artifact服务器。GR尚未 更改自己的build文件。。

5.package镜像和artifact镜像

package包镜像,国内有中科大和浙大。参考

PkgMirrors.jl v1.0.0 - 在 Julia 中使用镜像站 工程发布 项目地址:GitHub - sunoru/PkgMirrors.jl: Use alternative mirrors to manage your packages for Julia. 网络不稳定对在国内的用户来说是个很严重的问题,直接影响到了使用甚至安装 Julia 的体验。最近一段时间我尝试使用镜像站做源的方式解决这个问题,在浙江大学镜像站上搭建了一个有着 Julia 各个发行版以及各个…

artifact镜像,可以设置为韩国新加坡或者个人搭建的artifact服务器。参考 https://discourse.juliacn.com/t/topic/2969/20 如在startup.jl中添加 ENV[“JULIA_PKG_SERVER”] = “https://blog.iyu.icu/myjuliapkgserver”

注意:设置PkgMirror只能解决pkg.add步骤问题。此时下载的仅是源码,这些文件一般较小。 设置PKgServer解决build时二进制依赖下载困难问题。

6.关于GR包安装

GR包add时会从github下载GR包的julia部分。build是会从aws s3服务器或者gr官网下载依赖的二进制底层库。该包尚未采用最新的artifact管理方式,因此目前不会从julia的atrifact服务器下载依赖的二进制gr库。 解决的办法之一,自行下载gr.tar.gz文件,并按照build.jl提示解压到GR包的deps/gr下。

7.本地安装。

julia对本地安装并不友好(依赖的包还需要从网络下载,仍然需要git同步包项目地址)。

Pkg.add(PackageSpec(url=“带git头的包文件夹”))

或者可考虑 ]dev 包文件夹

8. .julia文件夹的内容 一个想法:能不能分享自己的.julia 综合讨论区 我是 win10 .julia 有 5.72 GB(WSL 认为是 5.9G)。 WSL 中的 julia 全新的只有 67M 差不多就全是 registries 的大小了。 WSL 没啥可看的~/.julia$ du -lh --max-depth=1 88K ./clones 20K ./compiled 4.0K ./environments 92K ./… 9.conda相关

参考

ORCA包的安装(Windows, V1.4) 库的安装及使用 本人尝试安装ORCA的步骤 ]add ORCA 只是下载了ORCA以及依赖的Conda 包到 .julia/packages中,此时的包尚不能使用。 build时会运行包中的build.jl文件,如果build失败,可查看该包的build.jl文件,查看发生了什么。 在]build ORCA 时发生以下过程: [image] 1. 安装conda Using Conda, 此时会运行c… 综上 update registry 同步慢 ----->使用国内镜像的gerneral Pkg.add 下载源码慢。-----> 使用PkgMIirror设置镜像 pkg.build 下载依赖的二进制文件。-----> 设置PkgServer

实际上往往设置PkgServer就可以了。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3