2016-04-15 7 views
5

npm list का उपयोग इंस्टॉल किए गए पैकेज, संस्करणों और संबंधों के एक पेड़ दिखाएगा:क्या जुलिएआ-लैंग में पैकेज निर्भरता पेड़ बनाने का कोई तरीका है?

enter image description here

हालांकि जूलिया पैकेज प्रबंधन अलग (उदाहरण के लिए सामान्य रूप से एक पैकेज की कोई दूसरी प्रति मौजूद है) है, लेकिन वहाँ किसी भी तरह से है:

  • जानें कि एक पैकेज क्यों स्थापित किया गया है?
  • या एक पैकेज निर्भरता पेड़ का निर्माण।

उत्तर

4

मैं वहाँ एक सरल समारोह है नहीं लगता है, लेकिन यह भी इन दोनों कार्यों से कोई लेना देना मुश्किल नहीं होना चाहिए:

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" 
    ⋮     => ⋮ 
+0

धन्यवाद @ डेडकास्टर, लेकिन यहां 'आश्रितों()' के बारे में कुछ भी क्यों नहीं है [http://docs.julialang.org/en/release-0.4/stdlib/pkg/]? –

+0

@RezaAfzalanYes, यह प्रलेखित प्रतीत नहीं होता है। और क्या यह एक बार 'whorequires() 'का अनुचित अनुचित नाम था? :) – daycaster

2

सरल कोड bellow प्रिंटआउट होगा की आवश्यकता है-से एक के लिए परिणाम पैकेज:

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 

संपादित

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 
(@amrods द्वारा टिप्पणी की इस मुद्दे को कवर करने के लिए)
+0

मैंने आपके फ़ंक्शन का उपयोग करने का प्रयास किया, ऐसा लगता है कि एक अनंत लूप होता है: 'वेश्याओं ("वितरण")' एक दूसरे के आश्रितों के रूप में "मैड्स" और "बिग्यूक्यू" प्रिंटिंग रखता है। – amrods

+0

यदि आपने AbstractTrees.jl का उपयोग किया है तो आपको अटैचमेंट यूनिकोड पेड़-रेखा खींची जाएगी। अधिक या कम स्वचालित रूप से (अपने वृक्ष के डेटास्ट्रक्चर को डकटाकर)। लेकिन यह एक निर्भरता है, इसलिए। –

संबंधित मुद्दे