不会因为新命名空间就获得进程隔离。run_module会把指定模块的代码放在新的模块命名空间里执行,并返回该模块的globals字典,但这只是命名空间层面的隔离,不是进程隔离或安全沙箱。模块代码仍在当前Python进程内运行,执行期间和返回后产生的副作用仍可能留在进程里,例如其他模块的导入缓存。因此不能用它运行未知模块来试探安全性,也不能把它当作独立进程来隔离故障或恶意代码。

适用:本题用于天津和平区台式电脑Python3.14授权维护的去敏代码与已有日志,核runpy执行环境,不执行客户模块。
观察:应先只读原记录,确认运行的是哪个绝对模块名,以及是否通过init_globals预置了全局变量。若模块是包,run_module会导入该包并执行其__main__子模块;返回的字典可用来查看本次执行得到的模块全局变量,但这不代表进程状态已被清理。导入缓存只对照已有调用前后记录,不为观察重新执行模块;如果传入alter_sys为True,还要留意sys.argv[0]和sys.modules中临时模块对象的改动只在函数返回前恢复,而且这种对sys的操作不是线程安全的。观察结果若显示相关模块已进入缓存或全局状态发生变化,就应把它视为当前进程内的副作用,而不是新命名空间带来的隔离效果。
风险在于把“新模块命名空间”误读为“与当前进程隔离”。run_module执行的代码可以直接使用当前进程资源,可能触发导入、修改全局对象或留下缓存;由被执行代码定义的函数和类,在runpy函数返回后也未承诺仍能正确工作。若把未知模块交给它运行,等于在当前进程里执行未知代码,安全边界并没有建立。多线程环境中调用并改动sys,还可能让其他线程看到部分初始化的模块或变化的参数列表。
下一步:停止执行来源不明或未经确认的模块,交软件负责人按权限和资源隔离方案评估;新开进程或换用加载接口本身也不能当作代码已经安全的证据。需要核查时,请准备去敏后的模块名、调用参数、异常日志、调用前后sys.modules相关记录,以及是否使用alter_sys的说明;台式电脑上的活动连接和业务原文件不要改动。天津和平区用户可通过电脑快修网了解信息展示与第三方维修对接范围,400-877-9605仅作咨询,实际服务和安排需确认。