python脚本编译及转为exe可执行文件

一般我们执行 python 脚本都是在 python 环境中运行,这里通过将python脚本转化为一个 exe 文件,这样只需要在windows环境下双击 exe 文件就可以运行程序,方便其他人使用。

python脚本转为exe方法

根据某个网上的教程^1,这里使用 PyInstaller 模块实现这个功能。

安装 PyInstaller

在 windows 的控制台下,运行

1
pip install pyinstaller

python 转为 exe

在 windows 的控制台下,运行

1
pyinstaller -F split_plink.py

在当前目录下会生成很多文件夹和文件,其他都不用管,我们需要的就是 dist 目录下的 split_plink.exe 程序文件。

这里如果不使用 -F 选项,那么 dist 目录下除了相应的 exe 文件还会生成很多别的文件,运行 exe 程序时,必须同时包含dist 文件夹下的其他文件,只有 exe 程序 运行不成功。我们使用了 -F 选项 ,就只有一个 exe 程序 ,拷贝程序只要拷贝这个 exe 程序即可,更加方便。

如果不想要控制台窗口,可以采用 -w 选项。

注意PyInstaller打包的执行文件,只能在和打包机器系统同样的环境下。也就是说,不具备可移植性,若需要在不同系统上运行,就必须针对该平台进行打包^2

更详细的解释

可见 python之pyinstaller库将python脚本编译成可执行程序(windows系统) ^2

python 脚本编译

python 脚本文件经过编译后可以生成 pyc 文件,提高加载速度。

对于单个 python 脚本,可以通过下面的 python 命令编译

1
2
import py_compile
py_compile.compile('*.py')

命令行方式为 python -m *.py ,但是这种方式我试了会报错(如果脚本用 sys.argv 传参的话)。

针对一个目录下所有的 python 脚本,可以通过 compileall 模块来批量化编译(目录的绝对路径前面加 ‘r’ ,是为了告诉编译器这是个 raw string ,不要对该字符串转意)。

1
2
import compileall
compileall.compile_dir(r'/path')

注意,编译以后得到 pyc 文件只能在编译时的 python 编译器下运行,否则可能会报错,报错信息类似下面。根据网上的说法,只要运行 pyc 文件采用的 python 编译器版本与编译时用的一样就行,举例而言,就是说你在 3.7 版本的 python 编译器编译得到的 pyc 文件只能在 3.7 版本下运行。

1
RuntimeError: Bad magic number in .pyc file
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2019-2022 Vincere Zhou
  • 访问人数: | 浏览次数:

请我喝杯茶吧~

支付宝
微信