在tcl
如何找出加載的包的路徑?tcl - 如何找到加載包的路徑?
% tclsh
% package require csv
我想找出加載csv
的路徑。
在Python中,一個可以find the path of a module使用
>>> import os
>>> print os.__file__
'/a/b/python2.2.1/linux26_x86_64/lib/python2.2/os.pyc'
我在tcl
在tcl
如何找出加載的包的路徑?tcl - 如何找到加載包的路徑?
% tclsh
% package require csv
我想找出加載csv
的路徑。
在Python中,一個可以find the path of a module使用
>>> import os
>>> print os.__file__
'/a/b/python2.2.1/linux26_x86_64/lib/python2.2/os.pyc'
我在tcl
這不是簡單的找一個類似的命令:在Tcl的包似乎比一個更抽象的東西在蟒蛇。
首先,有兩種包:「classic」和"modules",它們具有不同的底層機制,用於查找響應package require ...
命令加載的內容。
接下來,這兩種包都可以做任何他們希望提供的功能。這意味着它們可以是(但不限於):
source
只有一個Tcl文件或任意數量的文件。load
。因此,問題本身沒有什麼意義,因爲只有模塊由恰好一個自包含的文件,但代表的「經典」套餐可以自由地實現自己,因爲他們認爲合適的。另一方面,每個包通常使用這種或那種方式向包子系統提供某些信息,這些信息可以使用命令package ifneeded
來檢索(並解析)。例如,我的Windows系統的ActiveState Tcl的8.5.x的,我有:
% package require csv
0.7.2
% package ifneeded csv 0.7.2
package provide csv 0.7.2;source -encoding utf-8 {C:/Program Files/Tcl/lib/teapot/package/tcl/teapot/tcl8/8.3/csv-0.7.2.tm}
注意什麼package ifneeded
回報只是一個Tcl腳本來這意味着是eval
uated得到加載的包,所以這些信息的解析必然是固有的,特別脆弱的。
爲TCL包可以通過命令來查看所有loadedable路徑顯示目錄的列表:對不同類型的程序包的詳細信息
join $::auto_path \n
謝謝。 – Anand
+1爲確定。 –
另外,可以安裝多個版本的軟件包。 'package names'產生一個(未排序的)可用包列表,'package versions $ pkg'產生一個可用包的(未排序)列表版本。 _每個_都有自己的加載腳本。 –