关于sys.executable的疑问:复制的Python解释器为何运行原脚本?
认知偏差纠正与问题解析
你的疑问核心是没搞清楚sys.executable在不同运行场景下的实际取值,以下是具体拆解:
两种场景下的sys.executable差异
直接用系统Python解释器运行脚本:
当你通过C:\Python39\python.exe your_script.py启动脚本时,sys.executable确实返回系统Python解释器的路径。此时复制这个解释器到新位置,单独运行复制后的exe只会打开Python交互式命令行,不会自动执行你的脚本——因为没有传递脚本路径作为参数。脚本被打包成独立可执行文件(如PyInstaller):
如果你用打包工具把脚本转换成单文件exe,此时sys.executable返回的是打包后的exe文件路径,而非系统Python解释器。这个打包后的exe本身整合了你的脚本逻辑和嵌入式Python环境,所以复制它到新位置后,运行它自然会执行原脚本的代码,而非纯解释器。
你的代码补充说明
另外注意代码里的变量名不一致:前面定义的是file_location,但注册表命令里用的是evil_file_location,这可能导致注册表指向的不是你复制的文件,需要修正。
内容的提问来源于stack exchange,提问作者user19154852
相关产品推荐
相关产品推荐

