Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save Warm-rain/bbfb67561d61ed6a12a06fb95f5e2e2b to your computer and use it in GitHub Desktop.
Save Warm-rain/bbfb67561d61ed6a12a06fb95f5e2e2b to your computer and use it in GitHub Desktop.
pyhton3.6.3是目前最新的版本,将python脚本打包为可执行的exe文件是通常的需求,这其实是一件比较简单的事情,但因为python混乱的版本控制和管理,网络上各种临时方法和补丁满天飞,应小伙伴的需求再上一篇博客,把python3.6.3的打包过程完整展现出来。
安装
pip3 install pyinstaller 即可
注意:别用pip3.6 install
打包
进入你要打包的python目录
按照你脚本程序中文件需求把python用到的文件放在一起
进入cmd程序丑陋的黑窗口
在光标后面键入pyinstaller yourfilename.py ,回车即可
目录下出现2个新的目录:dist、build,build可以删掉
进入dist,找到exe文件,点击打开,大功告成!
参数说明
上图列出pyinstaller的用法示例,常用的如下:
-F 表示生成单个可执行文件
-w 表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧!
-p 表示你自己自定义需要加载的类路径,一般情况下用不到
-i 表示可执行文件的图标
–version-file file_version_info.txt :表示将标准版本信息文件的内容赋给exe文件的属性
提醒:如果python需要用到外部的加载文件,如背景图片之类,需要按照你的程序中的要求放在相应的目录下,一般都是拷贝在生成的exe文件目录下,python程序中仅用文件名引用就行了,无需路径。
关于版本信息的设置问题
方法1:
这是pyinstaller自带的。
进入C:\Program Files\Python36-32\Lib\site-packages\PyInstaller\utils\cliutils\目录下,你会看到如下几个文件:
其中的grab_version是用来捕获一个exe文件的版本信息并自动在同一目录下输出一个file_version_info.txt文件版本信息的,其中set_version是用来给一个exe文件赋值版本信息的,用法分别如下:
进入cmd界面
将目录转移到C:\Program Files\Python36-32\Lib\site-packages\PyInstaller\utils\cliutils\下
拷贝一个要获取版本信息的exe文件到这个目录下
在cmd窗口键入:python grab_version.py filename.exe
目录下会自动出现一个标准的file_version_info.txt文件,双击打开,按照需求修改
在cmd窗口键入:python set_version.py file_version_info.txt youfilename.exe即可
方法2:
在打包的时候就已经准备好了版本信息文件:file_version_info.txt
打包时附带有如下参数:pyinstaller –file-version file_version_info.txt yourfile.py即可
方法3
进入
进入http://www.carifred.com/fvie/,下载fvie.exe工具,就是file-version-infp-edit的首字母缩写
PyInstaller使用
执行命令 -- pyinstaller.exe [-option]  yourname.py    
1.1         Option 选项包括:
-F, -onefile 打包成一个exe文件
-D, -onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)
-c, -console, -nowindowed 使用控制台,无界面(默认)
-w, -windowed, -noconsole 使用窗口,无控制台
2          编译要转化的.py文件,变成.exe文件,最后编译成功后
2.1         -F,-onefile 打包成一个exe文件
Pyinstaller.exe  -F –w yourname.py
2.2 Pyinstaller.exe --console --onefile yourfile只生成一个文件 .exe (有控制台cmd窗口)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment