使用py2exe打包的Python解释器
我有一个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 应用程序那样“安装”。实际上,你只需把所有文件复制到一个新地方。只要搜索路径正确,这样就可以工作。