首页 > Script > pyinstaller 将 python 脚本打包成可执行程序

pyinstaller 将 python 脚本打包成可执行程序

[总点击:783次]
2009年12月27日

有些时候在需要将 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 下的小呢,囧。

Script , ,

  1. 2009年12月27日19:27 | #1

    哈哈,py2exe和freeze.py我那里都介绍过了,加上这个基本全了吧~
    不过,我用freeze.py搞pygtk的程序是没问题的啊,按理pyqt也应该可以,但是这位玩意搞出来的包,可能还需要手工加几个so文件的。。。

  2. xiooli
    2009年12月27日20:32 | #2

    @bones7456
    应该是要加几个so,不过没有详细去搞了,pyinstaller用起来挺简单的,能用就不折腾鸟。

本文的评论功能被关闭了.