2013-01-17 74 views
2

我是TCL的新手,並且正在努力訪問其他模塊。 SOURCE命令幫助我包含了我在TCL程序中編寫的其他代碼。但是,我認爲我在訪問代碼庫時遇到了問題。設置TCL以訪問tcl庫

例如,當我參考數學函數時,找不到它。我認爲我必須做些什麼來包括數學庫在我的計算機上的位置,以尋找通過tchsh85調用的程序。

invalid command name "::math::statistics::mv-ols" 
None of these directories exist on my computer: info library= C:/Tcl/lib/tcl8.5 auto_path= C:/Tcl/lib/tcl8.5 C:/Tcl/lib c:/tcl/lib/teapot/package/win32-x86_64/lib c:/tcl/lib/teapot/package/tcl/lib tcl library= C:/Tcl/lib/tcl8.5 auto_index= source C:/Tcl/lib/tcl8.5/word.tcl auto_index= source C:/Tcl/lib/tcl8.5/tm.tcl auto_index= source C:/Tcl/lib/tcl8.5/tm.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/parray.tcl auto_index= source C:/Tcl/lib/tcl8.5/history.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/history.tcl auto_index= source C:/Tcl/lib/tcl8.5/package.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/history.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/word.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/word.tcl auto_index= source C:/Tcl/lib/tcl8.5/package.tcl auto_index= source C:/Tcl/lib/tcl8.5/tm.tcl auto_index= source C:/Tcl/lib/tcl8.5/auto.tcl auto_index= source C:/Tcl/lib/tcl8.5/auto.tcl auto_index= source C:/Tcl/lib/tcl8.5/auto.tcl auto_index= source C:/Tcl/lib/tcl8.5/auto.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/auto.tcl auto_index= source C:/Tcl/lib/tcl8.5/history.tcl auto_index= source C:/Tcl/lib/tcl8.5/auto.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/history.tcl auto_index= source C:/Tcl/lib/tcl8.5/package.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/auto.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/auto.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/history.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/tm.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/auto.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/auto.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/word.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/package.tcl auto_index= source C:/Tcl/lib/tcl8.5/auto.tcl auto_index= source C:/Tcl/lib/tcl8.5/history.tcl auto_index= source C:/Tcl/lib/tcl8.5/package.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/word.tcl auto_index= source C:/Tcl/lib/tcl8.5/history.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/auto.tcl auto_index= source C:/Tcl/lib/tcl8.5/history.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/tm.tcl auto_index= source C:/Tcl/lib/tcl8.5/tm.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl 

我收到了這樣的回答: ::數學::統計是TCLlib的一部分。要檢查是否安裝了它,請輸入

軟件包需要tcllib ,如果安裝它,它會告訴您版本號。如果沒有安裝,您可以使用Teacup爲您安裝。

我試過代碼:

catch {package require nonexistentName} 
package names 
puts "[package names]" 

,我收到:

Thread logger img::pixmap TclOO tablelist_tile struct::tree opt tcltest img::ico img::pcx struct::set msgcat pngtcl tablelist::common ftp Tclx trsync tdom img::sgi report comm dde Mk4tcl img::sun img::gif img::window textutil cmdline csv img::tga Img img::png Tktable Itk Ttrace tipstack zlibtcl img::base platform fileutil Tk vfs ActiveTcl http tbcload Memchan style struct::graph tablelist treectrl struct::queue img::jpeg activestate::teapot::link img::bmp registry jpegtcl tdomhtml tooltip snit img::ppm struct::stack tcl::tommath img::tiff tls widget struct img::xpm md5 BWidget img::xbm log starkit Tcl Trf tifftcl Itcl img::ps sqlite3 base64 trofs 
0.7 

我可能不明白TCL但在其他語言我都用過,有沒有辦法建立一個目錄列表或文件以被調用代碼的特定順序搜索。在我看來,我需要告訴tclsh85在哪裏看。

我從ActiveState下載了tcl 8.5.13和BWidget 1.9.6我安裝了tcl,我在我的電腦上解壓縮了BWidget,但它位於與我的tcl程序不同的位置。這是數學的一部分嗎?如果不是,我應該下載什麼?當我在Windows Vista上運行時,我更喜歡獲取可執行版本,而不是我需要構建的東西。我可以創建tcl程序,只要它們是自包含的,或者如果我可以使用SOURCE,一切都很好。我遇到問題的地方是在我的程序外部調用代碼。

我擔心需要爲我的環境設置auto_path,因爲它現在不與我計算機上的任何內容對應。

請回答假設我不知道tcl如何工作。我試圖教導自己(在互聯網文檔和將回答任命的人的幫助下)。

謝謝。

回答

10

好吧,我試着總結一下你的問題:

你想知道如何安裝您需要的軟件包。

您可以使用teacup安裝它們,例如teacup install math::statistics,它應該做的工作,或下載tcllib並安裝它。 Tcllib的安裝很簡單,應該自動選擇安裝它的正確路徑。要在你的代碼中使用庫,你只需要做package require math::statistics

你想知道如何添加Tcl應該查找庫的目錄。

根據什麼樣的LIB是的,有以下兩種方式:

  • ,如果有一個名爲將pkgIndex.tcl或自動索引,那麼你必須修改auto_path變量文件。這可以用lappend auto_path path/to/the/files完成。
  • 如果只有一個文件以.tm結尾,那麼它會更復雜一些:您必須添加正確的父目錄。所以如果你有一個位於/some/directory/math/statistics.tm的statistics.tm文件,這是math :: statistics軟件包,那麼相應的目錄是/ some /目錄。您可以使用::tcl::tm::path add /some/directory來添加它。

這樣的事情是幾乎從未必要的,因爲你管理它安裝BWidgets成功,auto_path的應該是對你罰款。請注意,Tcl使用(像許多其他語言,包括Java,Perl等)一個/作爲路徑分隔符而不是通常的窗口\

你喜歡有一個單一文件的可執行 是的,這是可能的,但你應該先了解如何獲取包,需要什麼樣的文件等以技術爲單個文件TCL通訊被稱爲Starkit,一非常有用的東西,但你應該已經熟悉Tcl了。

+0

請注意,'茶杯'不是一個Tcl命令,它是從命令行運行(開始 - >運行 - > cmd)。 「茶杯更新」將安裝所有可用的庫,但這可能需要一段時間。 –