python

python打包pyinstaller支持window和linu

2020-12-13  本文已影响0人  yichen_china

Python项目打包发布方法

目前python打包工具有多个,目前比较好用的为pyinstaller,该工具可以支持在window和linux下使用。
在windows下,大小为几十K的源文件打包成exe文件,可能为几十兆,原因是把程序所引用的库文件也一起打包在一起。
如下以windows系统为例,分2个步骤,演示如何使用pyinstaller打包。

pip install pyinstaller (安装过程报错解决)

安装目标:

pip install pyinstaller 

报错内容:

WARNING: You are using pip version 19.2.3, however version 20.0.2 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

解决方法:

运行--->cmd

使用 python -m pip install -U --force-reinstall pip 升级成功

Successfully installed pip-20.0.2

接下来又报错了 pip install pyinstaller 报错内容: time out

解决方法:  pip --default-timeout=100 install -U pyinstaller
Successfully built pyinstaller
Installing collected packages: altgraph, pywin32-ctypes, future, pefile, pyinstaller

第1步:安装pyinstaller

安装pyinstaller之前首先必须有pip,如果还没有安装,请用度娘搜索“python安装pip”,资源丰富,在此不再介绍,使用pip安装pyinstaller的命令如下:

pip install pyinstaller

命令执行的截图如下,直至安装完毕,我仅截取了前面部分打印信息。

第2步:打包exe文件

如果是打包一个py文件,可以使用“pyinstaller -F 待打包文件名”进行打包,在命令执行完毕后,会在dist目录下生成一个“待打包文件名.exe”的文件。如果不使用“-F”参数,则会在dist目录下生成一个“待打包文件名”的文件夹,该文件夹下包含“待打包文件.exe”,但是要整个文件夹在一起才能正常工作,因为这个文件夹的功能相当于使用“-F”时的一个“待打包文件.exe”。

pyinstaller -F xxxx.py #打包入口文件

使用加F参数打包成一个exe文件的操作截图如下:
使用“F”强制打包参数,有时会导致软件功能运行不正常,仅限于小的范例使用,如果项目有多个py文件,则建议别再使用“F”参数。
如果项目有多个文件,打包时可以把多个文件列出来,中间用空格隔开即可。
如果需要修改默认图标为指定图标,则使用“-i 图标文件名”来实现。
如下为使用多个py文件和图标的打包截图。

pyinstaller的参数见下表,大家可以在需要时参考。

参数 参数全称 参数说明
-F –onefile 打包成单个可执行文件,如果你的代码都写在一个.py文件,则可以使用,如果是多个.py文件,建议不要使用。
-D –onedir 打包多个文件,在dist中生成很多依赖文件,适合以框架形式编写工具代码,该方式代码较易于维护。
-K –tk 在部署时包含 TCL/TK。
-a –ascii 不包含编码.在支持Unicode的python版本上默认包含所有的编码。
-d –debug 产生debug版本的可执行文件
-w –windowed,–noconsole 使用Windows子系统执行.当程序启动的时候不会打开命令行(仅对Windows有效)
-c –nowindowed,–console 使用控制台子系统执行(默认)(只对Windows有效)
-s –strip 可执行文件和共享库将run through strip。
pyinstaller -c  xxxx.py

pyinstaller xxxx.py --console

打包报错 可以看下这个文章

注意Cygwin的strip可能使普通的win32 Dll无法使用

-X –upx 如果有UPX安装(执行Configure.py时检测),则会压缩执行文件(Windows系统中的DLL也会)
-o| DIR| –out=DIR | 指定spec文件的生成目录,如果没有指定,而且当前目录是PyInstaller的根目录,会自动创建一个用于输出(spec和生成的可执行文件)的目录.如果没有指定,而当前目录不是PyInstaller的根目录,则会输出到当前的目录下。

-p DIR    –path=DIR    

设置导入路径(和使用PYTHONPATH效果相似)。

可以用路径分割符(Windows使用分号,Linux使用冒号)分割,指定多个目录.也可以使用多个-p参数来设置多个导入路径,让pyinstaller自己去找程序需要的资源

-i <FILE.ICO> –icon=<FILE.ICO> 将file.ico添加为可执行文件的资源(只对Windows系统有效),改变程序的图标 pyinstaller -i ico路径 xxxxx.py
–i <FILE.EXE, N> –icon=<FILE.EXE, N>
将file.exe的第n个图标添加为可执行文件的资源(只对Windows系统有效)

-v FILE –version=FILE 将verfile作为可执行文件的版本资源(只对Windows系统有效)
-n NAME –name=NAME
可选的项目(产生的spec的)名字.如果省略,第一个脚本的主文件名将作为spec的名字

上一篇下一篇

猜你喜欢

热点阅读