2015-09-04 67 views
2

我有Win 7的機器和TCL從 downloads.activestate.com/ActiveTCL/releases/8.6.4.1/ActiveTcl8.6.4.1.299124-win32-x86_64-threaded.exe
安裝我使用TCL包fileutil成功,如:不能在TCL找到包fileutil(如何安裝第三方TCL解釋)

proc foo{} { 
# some code 
    package require fileutil 
    # able to use ::fileutil::updateInPlace in code 
} 

foo 

這是通過腳本在

C:/SVN/code/changeFile.tcl

現在做的,我使用相同的代碼更大腳本的一部分

proc foo{} { 
    # some code 
     package require fileutil 
    # some code using the package 

    } 

# more code 
cd "C:/SVN/code" 
foo 
#more code 
cd "C:/Program Files (x86)/Target Compiler Technologies/adsp2-12R2/designs/adsp2/ISS" 

這是腳本調用audio_sim.tcl的一部分,並通過以下命令調用上殼

cd "C:/Program Files (x86)/Target Compiler Technologies/adsp2-12R2/designs/adsp2/ISS" adsp2_ia.exe -T -t "C:/SVN/code/audio_sim.tcl"

現在這給了錯誤:

can't find package fileutil

爲什麼現在抱怨的時候這與我在第一個案例中所做的相似?

+0

在一審腳本是由tclsh.exe(或tc​​lsh86.exe)附帶您的ActiveTcl執行。在第二種情況下,它由adsp2_ia.exe執行,該程序是一個內置tcl解釋器的第三方程序。這就是爲什麼它找不到包裝。 Tcl在這個意義上有點獨特,因爲與Perl或Ruby不同,你可能經常在另一個程序中發現它爲腳本語言。很像JavaScript。這就像編寫Firefox的JavaScript代碼一樣,不會在IE中運行。我沒有解決這個問題,所以我把它作爲評論發佈。 – slebetman

+0

@slebetman所以我想我需要找到方法來爲第三方解釋器安裝這個軟件包 – user915783

+0

如果軟件包是純粹的tcl代碼,那麼您可以搜索實現該軟件包的文件,然後根據軟件包要求進行搜索。 – slebetman

回答

2

正如slebetman寫道,adsp2_ia.exe可能找不到ActiveTcl庫文件,但您可以自己導入該軟件包。在我的8.6.1安裝中,該文件位於C:\Tcl\lib\teapot\package\tcl\teapot\tcl8\8.2\fileutil-1.14.8.tm。您的位置或版本號可能不同,但請注意您正在尋找.tm文件。它不會在任何名爲fileutil的目錄中,這些目錄是用於相關軟件包的。

(另一個slebetman指針:)可能通過調用::tcl::tm::path add作爲參數的路徑使模塊可見。

如果不是,請使用source導入代碼。在任何程序之外在全球範圍內撥打電話。

然後你應該可以撥打package require fileutil

文檔:packagesourcetm

+0

對於.tm文件,最好做'tcl :: tm :: path add'而不是採購。也就是說,如果口譯員支持它。對於較老的口譯員(非常可能),您需要提供它。 – slebetman

+0

@slebetman:是的。我認爲建議的源代碼會使它更容易和更可能在非標準的解釋器中工作,但是爲了完整性,當然應該提及':: tcl :: tm :: path add'。謝謝。 –

+0

@PeterLewerin和slebetman謝謝你們..你是救世主。我找到了位置並在_ :: tcl :: tm :: path add_之後做了一個_source_,並且它工作得很好。 – user915783