julia的包管理新手入门(After V1.4) |
您所在的位置:网站首页 › 本地安装包在哪里 › julia的包管理新手入门(After V1.4) |
喜大普奔,北外镜像上线,使用简单。 julia | 镜像站使用帮助 | 北京外国语大学开源软件镜像站 | BFSU Open Source Mirror 本人julia新手,开始学习时安装包时也遇到很多困难。鉴于新手学习julia遇到最多的困难是包的安装,因此写下自己的理解,希望以下内容对julia新手能略有帮助。 同时本人并不专业,抛砖引玉,希望大神们能够不吝纠正错误,增加内容等,以便帮助众多julia新手跨过包安装这个门槛。 当我们安装包时,会有3个限速步骤。 update registry 同步 Pkg.add 下载源码 pkg.build 下载依赖的二进制文件。 1.julia的package默认存放在哪?julia的package的源码仓库存是放在github上的一个个项目,可以由任意人员开发。 2.Pkg.Registryjulia官方收录的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.addPkg.add(“xxx”)会先在resistry先查找该包,找出该包的依赖关系。然后从github xxxx项目下载该包及该包的依赖包。 注意,add仅仅是下载了该xxx在github上的包及依赖包到.julia下的package文件夹。 PkgMirror可以更改获取源码包的地址为国内镜像。 4.Pkg.buildPkg.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服务器在国内无法访问。 image993×311 85.5 KB 以gr为例,默认下载是github 的asset(实际上是amazon S3服务器)。gr的build文件还提供了其他下载地址,即gr的官网下载。不幸的是,这两个链接国内均难以下载。设置PkgServer可以更改二进制文件的下载地址。 5.artifactsartifact为为了解决二进制依赖文件难以下载而设置的。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 |