如果要在生产环境中使用它,如何在Julia中进行版本控制。也就是说,大多数Julia软件包和Julia本身都有0.3.10或类似版本号,因此您应该为(近)未来的主要接口更改做好准备,特别是当第一个数字从0翻转到1时。 / p>
我的包裹状态如下所示:
julia> Pkg.status()
4 required packages:
- DataFrames 0.6.9
- Gadfly 0.3.13
- Jewel 1.0.5
- Mongo 0.1.3
44 additional packages:
- ArrayViews 0.6.3
- BinDeps 0.3.15
- Calculus 0.1.10
- Codecs 0.1.4
- Color 0.4.7
- Compat 0.6.0
- Compose 0.3.13
- Contour 0.0.7
- DataArrays 0.2.17
- DataStructures 0.3.12
etc...
建议您经常使用Pkg.update()
,以便在所有套餐中获得最新补丁。
如果由于这些补丁需要更新软件包,或者需要使用新功能,则可能会破坏代码,并且各种软件包之间也可能存在依赖关系。
Julia可能是一种成熟的语言,没有严重的版本控制问题,但我觉得有必要对Julia用户对他们的体验进行评论。
答案 0 :(得分:7)
在生产环境中,您不应经常使用Pkg.update()
,或者至少在没有首先在非生产环境中进行测试时使用REQUIRE
。这对每个包装系统都是如此,而不仅仅是朱莉娅。
特别是对于Julia,我还建议您建立一组适合您的版本,然后在JuMP
文件中使用适当的下限和上限。
例如,假设~/.julia/v0.3/REQUIRE
0.9.2对我来说效果很好,就像Gadfly 0.4.2一样。我可能会在JuMP 0.9.2 0.10
Gadfly 0.4.2 0.5
中执行以下操作:
Pkg.update()
这样,如果我运行0.9.3
,我会得到0.4.3
和JuMP 0.10
如果它们出来,但我不会自动升级到1.0
。当然,这只有在你认为软件包维护者明智地使用版本号时才有效,这是一个严重的问题,特别是当它们出现在$products = array("prd_type"=> "prd","code"=>58,"stext"=>"Magnum Frame");
$colors = array();
$colors[] = array("prd_type"=> "color","code"=>60,"stext"=>"Pink");
$colors[] = array("prd_type"=> "color","code"=>61,"stext"=>"Red");
$colors[] = array("prd_type"=> "color","code"=>62,"stext"=>"Black");
$sizes = array();
$sizes[] = array("prd_type"=> "size","code"=>70,"stext"=>"M");
$sizes[] = array("prd_type"=> "size","code"=>71,"stext"=>"S");
$sizes[] = array("prd_type"=> "size","code"=>72,"stext"=>"XL");
$models = array();
$models[] = array("prd_type"=> "model","code"=>80,"stext"=>"Xmall");
$models[] = array("prd_type"=> "model","code"=>81,"stext"=>"Xtra");
$models[] = array("prd_type"=> "model","code"=>82,"stext"=>"Xcode");
之前时。
答案 1 :(得分:4)
DeclarativePackages.jl
包(https://github.com/rened/DeclarativePackages.jl)允许您准确指定要为每个项目使用的每个包的哪个版本:它启动Julia以及那些可用包的版本。这听起来像是你正在寻找的东西。