如何获取可执行文件

1 pyhton 脚本打包成可执行文件

请主要这里是打包成可执行文件,而不是编译成可执行文件。本质上仍是依靠python解释器执行代码。

1.1 . PyInstaller

PyInstaller 是一个非常流行的工具,可以将Python脚本打包成独立的可执行文件。它支持Windows、Linux和macOS平台。但请注意其作用仅为打包而非编译。

1.1.1 安装 PyInstaller

1
pip install pyinstaller

1.1.2 使用 PyInstaller 打包python脚本

假设你有一个名为 main.py 的Python脚本,你可以使用以下命令将其编译成可执行文件:

1
pyinstaller --onefile main.py
  • --onefile 选项表示将所有内容打包成一个单独的可执行文件。
  • 如果不使用 --onefile,PyInstaller 会生成一个包含多个文件的目录。

1.1.3 输出

编译完成后,可执行文件将位于 dist 目录中。例如,在Windows上,生成的可执行文件将是 dist/main.exe,在Linux和macOS上,生成的可执行文件将是 dist/main

2 pyinstaller 打包后的可执行文件性能

2.1 . 启动时间

  • PyInstaller 打包后的应用:启动时间通常会更长。这是因为打包后的应用在启动时需要解压和加载所有的依赖库和资源文件。第一次运行时,这可能需要一些时间,因为需要将这些资源解压到临时目录中。
  • 直接运行 Python 脚本:启动时间相对较短,因为解释器直接读取和执行脚本文件,没有额外的解压和加载步骤。

2.2 . 内存使用

  • PyInstaller 打包后的应用:内存使用可能会稍高一些,因为所有依赖库和资源文件都需要加载到内存中。
  • 直接运行 Python 脚本:内存使用相对较低,因为解释器按需加载模块和资源。

2.3 . 执行效率

  • PyInstaller 打包后的应用:一旦启动并加载完毕,实际的执行效率与直接运行 Python 脚本相差不大。Python 代码仍然是由相同的解释器执行的,因此在执行阶段的性能差异通常很小。
  • 直接运行 Python 脚本:执行效率取决于解释器的优化程度和代码本身的效率。

2.4 . 环境一致性

  • PyInstaller 打包后的应用:打包后的应用包含所有必要的依赖项,因此在不同环境中运行时更加稳定和一致。
  • 直接运行 Python 脚本:依赖于目标环境中的 Python 解释器和相关库的版本,可能会出现兼容性问题。

2.5 . 分发和部署

  • PyInstaller 打包后的应用:分发和部署更加方便,用户只需下载一个可执行文件即可运行,无需安装 Python 和相关依赖。
  • 直接运行 Python 脚本:需要确保目标环境已经安装了 Python 和所有必要的依赖库。

2.6 示例代码

假设你有一个简单的 Python 脚本 test_script.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import time

def main():
start_time = time.time()

# 模拟一些操作
for _ in range(1000000):
pass

end_time = time.time()
print(f"Execution time: {end_time - start_time:.2f} seconds")

if __name__ == "__main__":
main()

你可以使用 PyInstaller 打包这个脚本:

1
pyinstaller --onefile test_script.py

2.7 结论

  • 启动时间:打包后的应用通常启动时间较长。
  • 执行效率:一旦启动,打包后的应用和直接运行的脚本在执行效率上的差异通常很小。
  • 内存使用:打包后的应用可能会占用更多的内存。