tcl/tk safe - 2 - Safe Base

本文介绍了TCL的Safe Base,它是安全模式解释器的一种扩展,允许在子解释器中执行脚本文件和操作包,但需主解释器授权,并且限制了exit命令,确保子解释器退出不会影响主程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在上一篇http://blog.youkuaiyun.com/msptop/archive/2008/03/31/2233187.aspx 中介绍了关于安全模式的解释器基本特性。然而这些特性太简单太原始,没有脚本库环境,使用起来需要构造大量的额外代码,才能正确执行所需功能。

本节将会介绍tcl提供的已经封装好的安全模式解释器The Safe Base。Safe Base是原始安全模式的扩展,在这种扩展模式下,可以在子解释器中执行脚本文件(source命令)和操作包(package 命令),但是这些操作需要主解释器的授权,它只能访问在主解释器中定义的路径下的文件。并且它也“覆盖”了exit命令。在这种模式下,若执行exit,则子解释器自行销毁并不会波及主程序。

Safe Base的有关命令如下表:

safe::interpCreate slave options?

创建一个Safe Base模式名为slave的解释器

safe::interpInit slave options?

初始化一个安全模式的解释器

safe::interpConfigure slave options?

配置Safe Base模式的解释器,支持属性:-accessPath pathlist, -nostatics, -deleteHook script, -nestedLoadOk

safe::interpDelete slave

删除SafeBase模式的解释器slave

safe::interpAddToAccessPath slave directory

为slave添加授权访问路径

safe::interpFindInAccessPath slave path

返回授权访问路径的符号(用于标识该路径)

safe::setLogCmd cmd? arg?...

若没有参数则返回所有在改解释器中执行过的命令与history类似,若有参数,则将该参数加入记录在解释器中执行过命令的log

 

Safe Base中的命令别名:

source

在授权访问路径中执行脚本

load

在授权访问路径中导入二进制库

file

只有dirname, join, extension, root, tail, pathname, and split 这些操作被允许

exit

销毁调用

Microsoft Windows [版本 10.0.19045.5608] (c) Microsoft Corporation。保留所有权利。 F:\789>BUILD_EXE.PY 正在准备构建环境... 安装依赖... Looking in indexes: https://mirrors.aliyun.com/pypi/simple/ Requirement already satisfied: pandas in d:\python\py3.13\lib\site-packages (2.3.0) Requirement already satisfied: openpyxl in d:\python\py3.13\lib\site-packages (3.1.5) Requirement already satisfied: tabulate in d:\python\py3.13\lib\site-packages (0.9.0) Requirement already satisfied: pyinstaller in d:\python\py3.13\lib\site-packages (6.14.1) Requirement already satisfied: pillow in d:\python\py3.13\lib\site-packages (11.2.1) Collecting tkinterdnd2 Downloading https://mirrors.aliyun.com/pypi/packages/08/c3/e04f004a53c00dc01126b6f998264cef672c6883c36aa4bd65845a8eb4c0/tkinterdnd2-0.4.3-py3-none-any.whl (493 kB) Requirement already satisfied: numpy>=1.26.0 in d:\python\py3.13\lib\site-packages (from pandas) (2.3.1) Requirement already satisfied: python-dateutil>=2.8.2 in d:\python\py3.13\lib\site-packages (from pandas) (2.9.0.post0) Requirement already satisfied: pytz>=2020.1 in d:\python\py3.13\lib\site-packages (from pandas) (2025.2) Requirement already satisfied: tzdata>=2022.7 in d:\python\py3.13\lib\site-packages (from pandas) (2025.2) Requirement already satisfied: et-xmlfile in d:\python\py3.13\lib\site-packages (from openpyxl) (2.0.0) Requirement already satisfied: setuptools>=42.0.0 in d:\python\py3.13\lib\site-packages (from pyinstaller) (80.9.0) Requirement already satisfied: altgraph in d:\python\py3.13\lib\site-packages (from pyinstaller) (0.17.4) Requirement already satisfied: pefile!=2024.8.26,>=2022.5.30 in d:\python\py3.13\lib\site-packages (from pyinstaller) (2023.2.7) Requirement already satisfied: pywin32-ctypes>=0.2.1 in d:\python\py3.13\lib\site-packages (from pyinstaller) (0.2.3) Requirement already satisfied: pyinstaller-hooks-contrib>=2025.4 in d:\python\py3.13\lib\site-packages (from pyinstaller) (2025.5) Requirement already satisfied: packaging>=22.0 in d:\python\py3.13\lib\site-packages (from pyinstaller) (25.0) Requirement already satisfied: six>=1.5 in d:\python\py3.13\lib\site-packages (from python-dateutil>=2.8.2->pandas) (1.17.0) Installing collected packages: tkinterdnd2 Successfully installed tkinterdnd2-0.4.3 应用图标已创建 开始打包... 6173 INFO: PyInstaller: 6.14.1, contrib hooks: 2025.5 6173 INFO: Python: 3.13.3 6209 INFO: Platform: Windows-10-10.0.19045-SP0 6209 INFO: Python environment: D:\python\py3.13 6211 INFO: wrote F:\789\TableToMD.spec 6214 INFO: Removing temporary files and cleaning cache in C:\Users\0\AppData\Local\pyinstaller 6216 INFO: Module search paths (PYTHONPATH): ['F:\\789', 'D:\\python\\py3.13\\python313.zip', 'D:\\python\\py3.13\\DLLs', 'D:\\python\\py3.13\\Lib', 'D:\\python\\py3.13', 'D:\\python\\py3.13\\Lib\\site-packages', 'D:\\python\\py3.13\\Lib\\site-packages\\setuptools\\_vendor', 'F:\\789'] 7096 INFO: Appending 'datas' from .spec 7096 INFO: checking Analysis 7097 INFO: Building Analysis because Analysis-00.toc is non existent 7097 INFO: Running Analysis Analysis-00.toc 7097 INFO: Target bytecode optimization level: 0 7098 INFO: Initializing module dependency graph... 7099 INFO: Initializing module graph hook caches... 7137 INFO: Analyzing modules for base_library.zip ... 8830 INFO: Processing standard module hook 'hook-heapq.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\PyInstaller\\hooks' 9191 INFO: Processing standard module hook 'hook-encodings.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\PyInstaller\\hooks' 11186 INFO: Processing standard module hook 'hook-pickle.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\PyInstaller\\hooks' 12917 INFO: Caching module dependency graph... 12954 INFO: Looking for Python shared library... 12974 INFO: Using Python shared library: D:\python\py3.13\python313.dll 12975 INFO: Analyzing F:\789\table_to_md.py 13040 INFO: Processing standard module hook 'hook-pandas.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\PyInstaller\\hooks' 15345 INFO: Processing standard module hook 'hook-platform.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\PyInstaller\\hooks' 15455 INFO: Processing standard module hook 'hook-sysconfig.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\PyInstaller\\hooks' 15522 INFO: Processing standard module hook 'hook-numpy.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\PyInstaller\\hooks' 16434 INFO: Processing standard module hook 'hook-difflib.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\PyInstaller\\hooks' 16776 INFO: Processing standard module hook 'hook-multiprocessing.util.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\PyInstaller\\hooks' 17001 INFO: Processing standard module hook 'hook-xml.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\PyInstaller\\hooks' 19675 INFO: Processing pre-safe-import-module hook 'hook-typing_extensions.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\PyInstaller\\hooks\\pre_safe_import_module' 19689 INFO: SetuptoolsInfo: initializing cached setuptools info... 24695 INFO: Processing standard module hook 'hook-charset_normalizer.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\_pyinstaller_hooks_contrib\\stdhooks' 25329 INFO: Processing standard module hook 'hook-pytz.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\PyInstaller\\hooks' 28322 INFO: Processing standard module hook 'hook-pandas.io.formats.style.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\PyInstaller\\hooks' 30856 INFO: Processing standard module hook 'hook-pandas.plotting.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\PyInstaller\\hooks' 31746 INFO: Processing standard module hook 'hook-openpyxl.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\_pyinstaller_hooks_contrib\\stdhooks' 31993 INFO: Processing standard module hook 'hook-lxml.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\_pyinstaller_hooks_contrib\\stdhooks' 32622 INFO: Processing standard module hook 'hook-lxml.etree.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\_pyinstaller_hooks_contrib\\stdhooks' 32885 INFO: Processing standard module hook 'hook-xml.etree.cElementTree.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\PyInstaller\\hooks' 33332 INFO: Processing standard module hook 'hook-PIL.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\PyInstaller\\hooks' 33454 INFO: Processing standard module hook 'hook-PIL.Image.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\PyInstaller\\hooks' 34198 INFO: Processing standard module hook 'hook-PIL.ImageFilter.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\PyInstaller\\hooks' 35938 INFO: Processing standard module hook 'hook-sqlite3.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\PyInstaller\\hooks' 36474 INFO: Processing standard module hook 'hook-pandas.io.clipboard.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\PyInstaller\\hooks' 36845 INFO: Processing standard module hook 'hook-dateutil.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\_pyinstaller_hooks_contrib\\stdhooks' 37119 INFO: Processing pre-safe-import-module hook 'hook-six.moves.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\PyInstaller\\hooks\\pre_safe_import_module' 37549 INFO: Processing standard module hook 'hook-xml.dom.domreg.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\PyInstaller\\hooks' 38305 INFO: Processing pre-find-module-path hook 'hook-tkinter.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\PyInstaller\\hooks\\pre_find_module_path' 38309 INFO: TclTkInfo: initializing cached Tcl/Tk info... 38898 INFO: Processing standard module hook 'hook-_tkinter.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\PyInstaller\\hooks' 38996 INFO: Processing standard module hook 'hook-tkinterdnd2.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\_pyinstaller_hooks_contrib\\stdhooks' 39036 INFO: Analyzing hidden import 'xlwt' 39037 ERROR: Hidden import 'xlwt' not found 39038 INFO: Processing module hooks (post-graph stage)... 39258 INFO: Processing standard module hook 'hook-lxml.isoschematron.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\_pyinstaller_hooks_contrib\\stdhooks' 39283 WARNING: Hidden import "jinja2" not found! 39592 INFO: Processing standard module hook 'hook-PIL.SpiderImagePlugin.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\PyInstaller\\hooks' 39653 INFO: Processing standard module hook 'hook-_tkinter.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\PyInstaller\\hooks' 39655 INFO: Processing standard module hook 'hook-lxml.objectify.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\_pyinstaller_hooks_contrib\\stdhooks' 39673 INFO: Performing binary vs. data reclassification (1560 entries) 40208 INFO: Looking for ctypes DLLs 40268 INFO: Analyzing run-time hooks ... 40273 INFO: Including run-time hook 'pyi_rth_inspect.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks' 40282 INFO: Including run-time hook 'pyi_rth_pkgutil.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks' 40285 INFO: Including run-time hook 'pyi_rth_multiprocessing.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks' 40287 INFO: Including run-time hook 'pyi_rth__tkinter.py' from 'D:\\python\\py3.13\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks' 40338 INFO: Creating base_library.zip... 40379 INFO: Looking for dynamic libraries 41975 INFO: Extra DLL search directories (AddDllDirectory): ['D:\\python\\py3.13\\Lib\\site-packages\\numpy.libs', 'D:\\python\\py3.13\\Lib\\site-packages\\pandas.libs'] 41975 INFO: Extra DLL search directories (PATH): [] 44927 INFO: Warnings written to F:\789\build\TableToMD\warn-TableToMD.txt 45012 INFO: Graph cross-reference written to F:\789\build\TableToMD\xref-TableToMD.html 45081 INFO: checking PYZ 45082 INFO: Building PYZ because PYZ-00.toc is non existent 45082 INFO: Building PYZ (ZlibArchive) F:\789\build\TableToMD\PYZ-00.pyz 46228 INFO: Building PYZ (ZlibArchive) F:\789\build\TableToMD\PYZ-00.pyz completed successfully. 46332 INFO: checking PKG 46332 INFO: Building PKG because PKG-00.toc is non existent 46333 INFO: Building PKG (CArchive) TableToMD.pkg 56140 INFO: Building PKG (CArchive) TableToMD.pkg completed successfully. 56162 INFO: Bootloader D:\python\py3.13\Lib\site-packages\PyInstaller\bootloader\Windows-64bit-intel\run.exe 56162 INFO: checking EXE 56163 INFO: Building EXE because EXE-00.toc is non existent 56163 INFO: Building EXE from EXE-00.toc 56163 INFO: Copying bootloader EXE to F:\789\dist\TableToMD.exe 56203 INFO: Copying icon to EXE 56210 INFO: Copying 0 resources to EXE 56210 INFO: Embedding manifest in EXE 56217 INFO: Appending PKG archive to EXE 56278 INFO: Fixing EXE headers 56752 INFO: Building EXE from EXE-00.toc completed successfully. 56774 INFO: Build complete! The results are available in: F:\789\dist 构建完成! EXE文件在 dist 目录中 运行 TableToMD.exe 启动程序 为什么启动程序没有应用界面呢?
06-23
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值