Tclsh 中的未知包 shell

Unknown package in Tclsh shell

当我 运行 我的 Tcl 脚本时,它在执行时说“can't find package sqlite3”。

那我该怎么办?

编辑: 看来我的设备中没有安装 sqlite3 包。

听起来 sqlite3 包不在 Tcl 解释器可以找到它的位置。该软件包甚至安装在该机器上吗?如果不是,那就是你的问题。

否则,如果库存在,那么问题是 Tcl 解释器没有被告知去哪里查找。出现这种情况的原因有几个,但您通常可以通过在 运行ning Tcl 之前设置 TCLLIBPATH 环境变量来解决此问题,而无需编辑脚本。比如我的系统(macOS,但原理是跨平台的),sqlite安装在/Library/Tcl/teapot/package/macosx10.5-i386-x86_64/lib/sqlite33.8.10.2/(具体来说,那里有一个pkgIndex.tcllibsqlite3.8.10.2.dylib;后面的名字是虽然是特定于平台的细节)所以我会 运行 tclsh with:

export TCLLIBPATH=/Library/Tcl/teapot/package/macosx10.5-i386-x86_64/lib
tclsh myScript.tcl

我不希望你的路径是一样的!这里的关键是你可以找到东西的安装位置并设置TCLLIBPATH使一切正常。


您还可以输入:

lappend ::auto_path /Library/Tcl/teapot/package/macosx10.5-i386-x86_64/lib

在您的脚本中 在第一个 package require 之前 ,但这会将脚本绑定到特定的系统安装布局,因此我们不建议将其用于除本地黑客。