Locating Packages: The auto_path Variable

The package facility assumes that Tcl libraries are kept in well-known directories. The list of well-known directories is kept in the auto_path Tcl variable. This is initialized by tclsh and wish to include the Tcl script library directory, the Tk script library directory (for wish), and the parent directory of the Tcl script library directory. For example, on my Macintosh auto_path is a list of these three directories:

Disk:System Folder:Extensions:Tool Command Language:tcl8.2
Disk:System Folder:Extensions:Tool Command Language
Disk:System Folder:Extensions:Tool Command Language:tk8.2

On my Windows 95 machine the auto_path lists these directories:

c:Program FilesTcllibTcl8.2
c:Program FilesTcllib
c:Program FilesTcllibTk8.2

On my UNIX workstation the auto_path lists these directories:

/usr/local/tcl/lib/tcl8.2
/usr/local/tcl/lib
/usr/local/tcl/lib/tk8.2

The package facility searches these directories and their subdirectories for packages. The easiest way to manage your own packages is to create a directory at the same level as the Tcl library:

/usr/local/tcl/lib/welchbook

Packages in this location, for example, will be found automatically because the auto_path list includes /usr/local/tcl/lib. You can also add directories to the auto_path explicitly:

lappend auto_path directory
					

One trick I often use is to put the directory containing the main script into the auto_path. The following command sets this up:

lappend auto_path [file dirname [info script]]

If your code is split into bin and lib directories, then scripts in the bin directory can add the adjacent lib directory to their auto_path with this command:

lappend auto_path 
    [file join [file dirname [info script]] ../lib]

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.145.1.51