pyinstaller 将 python 脚本打包成可执行程序
[总点击:783次]有些时候在需要将 python 写的程序部署到没有 python 运行环境的机器上的时候很麻烦,尤其是对方又不想安装 python 的时候更是如此,这时候将 python 脚本包装成可执行文件就是一个很好的解决方案。事实上有很多东西能做这个工作,常见的有 py2exe,freeze.py,pyinstaller 等,py2exe 貌似只支持 win,freeze.py 传说是将python 程序的字节码转换成 c 再编译的,这个我试了一下,转换命令行脚本时没啥问题,但是在转换一个简单的 pyqt 程序的时候,转换出来的程序不能正常运行。转向 pyinstaller, 这个就没问题了,在 linux 下和 win 下均能正确转换 pyqt 的程序。你可以在 http://www.pyinstaller.org/ 下载得到,按照 REDADME.txt 操作即可。
常用的参数(– 是两个 -):
–onefile 打包成单一文件
–onedir 制作出的文件放在同一个目录下(默认值)
–tk 包含TCL/TK的相关文件。
–windowed 制作窗口程序。(程序执行时不会有文字窗口出现,仅限 windows)
–console 制作一般的console程序。
–upx 使用UPX压缩程序。
–icon= 指定程序的图标(貌似我没有弄成功)。
–version= 指定程序的版本信息(信息写在 FILE 里面)。
–name= 指定程序的名称。若无此选项,则使用主脚本的名称。
为方便使用,我写了一个小 bash 脚本(pyinstaller.sh),用法:
pyinstaller.sh /path/to/your_script.py
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #!/bin/bash # Name: pyinstaller.sh # Author: xiooli <xioooli[at]yahoo.com.cn> # Site: http://joolix.com # Licence: GPLv3 # Version: 091227 pyinstaller_path="/home/xiooli/Projects/pinstaller/trunk" makespec="$pyinstaller_path/Makespec.py" build="$pyinstaller_path/Build.py" if [ "$1" ]; then app="`basename $1`" spec_dir=${app/.*} [ -d "$spec_dir" ] || mkdir -p "$spec_dir" read -p "输入额外参数:" arg python "$makespec" -c -o "$spec_dir" $arg $1 python "$build" "$spec_dir/$spec_dir.spec" fi |
ps: 在 win 下弄出的程序咋要比 linux 下的小呢,囧。
哈哈,py2exe和freeze.py我那里都介绍过了,加上这个基本全了吧~
不过,我用freeze.py搞pygtk的程序是没问题的啊,按理pyqt也应该可以,但是这位玩意搞出来的包,可能还需要手工加几个so文件的。。。
@bones7456
应该是要加几个so,不过没有详细去搞了,pyinstaller用起来挺简单的,能用就不折腾鸟。