がインストールされているパッケージ、バージョンと関係のツリーが表示されます:julia-langにパッケージ依存関係ツリーを構築する方法はありますか? <code>npm list</code>を使用して
ジュリアのパッケージ管理(例えば、通常パッケージの重複コピーが存在しない)異なっているが、これにどのような方法がありますが。
- 1つのパッケージがインストールされている理由を知っていますか?
- 、またはパッケージ依存関係ツリーを構築します。
がインストールされているパッケージ、バージョンと関係のツリーが表示されます:julia-langにパッケージ依存関係ツリーを構築する方法はありますか? <code>npm list</code>を使用して
ジュリアのパッケージ管理(例えば、通常パッケージの重複コピーが存在しない)異なっているが、これにどのような方法がありますが。
私は簡単な関数はないと思うが、この2つの機能を行うにはあまりにも難しいことではありません。
julia> Pkg.dependents("Cairo")
10-element Array{AbstractString,1}:
"Tk"
"Gtk"
"Mamba"
"Drawing"
"GtkUtilities"
"ProfileView"
"Brim"
"Winston"
"EcologicalNetwork"
"VennEuler"
julia> Pkg.installed()
Dict{ASCIIString,VersionNumber} with 119 entries:
"Libz" => v"0.0.2"
"Gtk" => v"0.9.3"
"Interact" => v"0.3.0"
"ForwardDiff" => v"0.1.4"
"Benchmark" => v"0.1.0"
"AxisAlgorithms" => v"0.1.4"
"Cairo" => v"0.2.31+"
"HttpParser" => v"0.1.1"
"DataFrames" => v"0.6.10"
"Requests" => v"0.3.4"
"QuartzImageIO" => v"0.1.0+"
"Markdown" => v"0.3.0"
"Requires" => v"0.2.2"
"ArgParse" => v"0.3.0"
⋮ => ⋮
簡単なコード怒鳴るが必要です-で結果をプリントアウトしますパッケージ:(@amrodsによるコメント問題をカバーするために)
whorequires(pkgname) = whorequires(pkgname, 0);
function whorequires(pkgname, i)
deps = Pkg.dependents(pkgname);
[print('-') for j=1:i];
println(pkgname);
length(deps) > 0 && [whorequires(dep,i+1) for dep in deps];
end
julia> whorequires("JuliaParser");
JuliaParser
-CodeTools
--Atom
-ASTInterpreter
--Gallium
-Jewel
EDIT
whorequires(pkgname) = whorequires(pkgname, 0, Dict{ASCIIString,Vector{ASCIIString}}());
function whorequires(pkgname, i, m)
[print('-') for j=1:i];
if (haskey(m,pkgname))
println("$pkgname *[duplicated]* is required by ", length(m[pkgname]), " packages");
else
println(pkgname);
m[pkgname] = Pkg.dependents(pkgname);
if (length(m[pkgname]) > 0)
for dep in m[pkgname]
whorequires(dep,i+1,m);
end
end
end
end
あなたの関数を使ってみましたが、無限ループがあるようです: 'whorequires(" Distribution ")'は、 "Mads"と "BIGUQ"を互いに依存関係にして印刷し続けます。 – amrods
AbstractTrees.jlを使用した場合、attactiveのユニコードツリー線が描画されます。多かれ少なかれ自動的に(あなたのtreeishデータ構造をducktypingすることによって)。しかし、それは依存関係です。 –
ありがとう@daycaster、なぜここに 'dependents()'について何もないのですか?[http://docs.julialang.org/en/release-0.4/stdlib/pkg/]? –
@RezaAfzalanはい、それは文書化されていないようです。そしてそれは一度、「whorequires()」という面白い不適切な名前を持っていましたか? :) – daycaster