2014-09-03 117 views
0

當試圖調用一個名爲「Winston」的庫包時,出現如下圖所示的錯誤。任何人都可以提出解決方案嗎?在茱莉亞調用一個庫時出現的TclError 0.3

julia> using Winston 
ERROR: TclError("error initializing Tk: version conflict for package \"Tcl\": have 8.5.15, need 8.6") 
in init at /home/devanand/.julia/v0.3/Tk/src/tkwidget.jl:61 
in include at ./boot.jl:245 
in include_from_node1 at ./loading.jl:128 
in include at ./boot.jl:245 
in include_from_node1 at ./loading.jl:128 
in reload_path at loading.jl:152 
in _require at loading.jl:67 
in require at loading.jl:54 
in include at ./boot.jl:245 
in include_from_node1 at ./loading.jl:128 
in include at ./boot.jl:245 
in include_from_node1 at ./loading.jl:128 
in reload_path at loading.jl:152 
in _require at loading.jl:67 
in require at loading.jl:51 
while loading /home/devanand/.julia/v0.3/Tk/src/tkwidget.jl, in expression starting on line 452 
while loading /home/devanand/.julia/v0.3/Tk/src/Tk.jl, in expression starting on line 25 
while loading /home/devanand/.julia/v0.3/Winston/src/tk.jl, in expression starting on line 1 
while loading /home/devanand/.julia/v0.3/Winston/src/Winston.jl, in expression starting on line 2699 

回答

4

錯誤消息本身是相當清楚的:

error initializing Tk: version conflict for package "Tcl": have 8.5.15, need 8.6

你對Tk的8.6鏈接(某種),但你已經對Tcl的8.5.15,這是不是一個組合鏈接(Tk 8.6使用了Tcl 8.6的一些特性; Tk 8.5 可能使用Tcl 8.6,儘管...)這種鏈接可能發生在運行時(例如,如果事件安裝爲libtcl.so而不是更常用的程序,推薦使用libtcl85.so或libtcl8.5.so,並且類似於Tk)或者可能比這更爲靜態,但解決它的唯一方法是使用圖書館工作。

目前推薦使用Tcl和Tk的版本完全一樣,並且注意調試庫的問題可能會非常困難。如果幸運的話,您可以使用ldd程序來探究實際鏈接到可執行文件的庫,這可以幫助指導哪些可能是錯誤的。如果事情正在通過動態定位和加載庫來調試,調試所產生的混亂可能會非常具有挑戰性......

+2

至少Tk在早期階段給出了明確的錯誤,而不是在隨後的隨機時間發生災難性的失敗...... – 2014-09-03 18:40:38

+1

幸運的是, Sys.dllist()'給你一個在運行時動態鏈接的所有庫的列表。 – ivarne 2014-09-04 08:11:16

+0

@DonalFellows:我試着檢查突觸管理器。 Tcl和Tcl 8.6都是綠色(已安裝),Tk和Tk 8.6也是。由於我不明白你的意思是通過鏈接等,你能指導我在這個問題上。我應該安裝'ldd'嗎?目前我遠離我的機器。 – dexterdev 2014-09-05 16:22:31