使用py2exe打包的Python解释器

4 投票
1 回答
796 浏览
提问于 2025-04-16 21:20

我有一个Python脚本想要在Windows上分发,但有些人可能没有安装Python。所以我使用了py2exe这个工具。问题是,在我的脚本中,我通过subprocess来运行其他Python脚本,而这需要Python解释器来执行程序。因为我在Windows上没有安装Python解释器,有没有办法可以绕过这个问题,不用解释器呢?有没有办法可以调用py2exe打包的Python解释器?

1 个回答

1

其实这比你想的要简单:与其启动子进程,不如使用内置的 eval() 命令来执行脚本。

[编辑] 如果你想重定向输入输出,可以用缓冲区或者其他支持 "write()" 的东西来替换 sys.stdout/sys.stderr

要恢复原来的值,sys 模块提供了 __stdout__ 等选项。

[编辑2] 我还没试过这个,但可能有效:把 "python.exe" 加入 py2exe 创建的文件集合中。

从主代码中,把 py2exe 创建的所有文件和 python.exe 复制到一个临时目录里。然后把你的所有脚本也加进去。

接下来,用一个小脚本启动新的 Python 解释器,这个脚本会把临时文件夹和 library.zip 加入到 sys.path 中。

注意:Python 不需要像 Windows 应用程序那样“安装”。实际上,你只需把所有文件复制到一个新地方。只要搜索路径正确,这样就可以工作。

撰写回答