вопрос про пакет в TCL - PullRequest
3 голосов
/ 23 августа 2011

У меня вопрос о пакете в TCL

У меня есть файл test1.tcl:

package provide hello 0.1.0


set globalVariable 20

Этот файл необходим в test2.tcl

package require hello 0.1.0

puts $globalVariable

и pkgIndex.tcl:

package ifneeded hello 0.1.0 [list source [file join $dir test1.tcl]]

, когда я выполняю test2.tcl, он сообщает, что пакет hello 0.1.0 не найден.

Я пытаюсь выполнитьpkgIndex.tcl, он говорит мне, что не может прочитать переменную dir, все эти три файла находятся в одной папке.как я мог это исправить?кто-нибудь может помочь?

Ответы [ 3 ]

2 голосов
/ 24 августа 2011

В дополнение к ответу Гленна и Джексона: интерпретатор Tcl также просматривает переменную окружения TCLLIBPATH, поэтому установите его так, чтобы он указывал на ваш каталог, содержащий пакет.Больше информации здесь: http://wiki.tcl.tk/1787. Я обычно помещаю эти строки в мой файл запуска bash:

TCLLIBPATH="$TCLLIBPATH ~/path/to/my/package"
export TCLLIBPATH
2 голосов
/ 23 августа 2011

Вам необходимо прочитать документацию для pkg_mkIndex, которая объясняет, как интерпретатор ищет пакеты для загрузки.Краткая версия:

Установите пакет как подкаталог одного из каталогов, заданных переменной tcl_pkgPath.Если вы устанавливаете пакет где-либо еще, вы должны убедиться, что каталог, содержащий пакет, находится в глобальной переменной auto_path или в непосредственном подкаталоге одного из каталогов в auto_path.

1 голос
/ 23 августа 2011

В 'test2.tcl' перед выполнением package require добавьте следующее:

lappend auto_path [file dirname [file normalize [info script]]]

Затем Tcl может найти в вашем текущем каталоге файл pkgIndex.

...