python打包之pyinstaller常用命令及常见问题

安装环境:pip install pyinstaller

注意事项:每个项目都尽量使用虚拟环境进行开发,这样打包的时候可以减少将冗余资源一起打包的情况。

1.使用pyinstaller打包常用相关命令如下:

命令行 说明
pyinstall -F 文件名.py 将需要打包的py打包成单个文件,默认带有控制台信息,在dist中生成一个执行文件(.exe),该执行文件已经将依赖文件(如关联模块)一同打包
pyinstall -D 文件名.py 将需要打包的py打包成多个文件,默认带有控制台信息,在dist中生成很多依赖文件(如关联模块),并同执行文件(.exe)在同一个目录,形成可执行程序
pyinstall -F 文件名.py -n 新文件名 打包并命名为新的文件名
pyinstall -F -i 图片所在绝对路径

将打包成的执行文件图片(exe)用.ico图片替换。

注意:只能是.ico文件格式才能设置为图标,如:png和jpg格式是不接受

pyinstall -F  文件名.spec

通过.spec文件打包成执行文件

注意:.spec文件是打包时自动形成的配置文件,可以通过对该文件进行配置调整并通过该文件重新生成新配置后的执行文件

pyinstall -d 文件名.py 用于打包成debug版本
pyinstall -F -W 文件名.py 打包成的执行文件运行时,不会显示控制台信息
pyinstall -F -C 文件名.py 打包成的执行文件运行时,会显示控制台信息

2.使用pyinstaller打包过程中的注意事项

注意事项 说明
关联文件的调用(数据驱动文件或者配置文件)

通过pyinstall -F 文件名.py命令打包成的执行文件执行时,如果存在一些数据驱动文件或者配置文件时,会导致运行过程中读取不到的数据驱动文件和配置文件的情况发生,解决方式如下:

1.重新使用pyinstall -D 文件名.py命令进行多文件打包并将关联文件放置在同执行文件同一级目录下面

2.在开发代码中,针对数据驱动文件及配置文件读取路径使用绝对路径,然后将数据驱动文件及配置文件放置在说设置的绝对路径下面(该方法不推荐,可用性太差)

3.同样方法2一样使用绝对路径,但该绝对路径的生成是通过导入sys库和os库,并使用os.path.realpath(sys.avgr[0])来进行实现,该方法能够根据执行文件所在目录动态调整绝对路径,最后将数据驱动文件及配置文件放置在说设置的绝对路径下面(但该方法有个问题就是有可能导致执行文件能运行成功,但是通过python解释器无法读取的问题。)

4.同方法2一样使用绝对路径,该绝对路径的生成也是通过导入sys库和os库,使用如下:

# 如果sys中没有“frozen”属性,则返回False,如果有,返回frozen属性值,并执行if语句
if getattr(sys, 'frozen', False):
    Base_DIR = os.path.dirname(sys.executable)  # sys.executable返回的是可执行二进制文件(.exe)的绝对路径
else:
    Base_DIR = (os.path.dirname(os.path.abspath(__file__)))  # 返回的是当前文件的上一层目录

最后将数据驱动文件及配置文件放置在说设置的绝对路径下面,推荐使用如上方法,该方法能够使得可执行文件(.exe)和用python解释器使用都能正常运行

关联模块的调用(import 模块名)

在对所要的py文件进行打包的过程中,只要是通过import导入的模块及第三方库,都会默认自动关联并打包,无需打包人员额外的操作

关联模块的调用(非import 模块名关联的动态模块) 可以在打包时生成的.spec文件添加项:hiddenimports=[]中添加模块名,然后使用命令:pyinstall -F 文件名.spec,生成新的打包文件即可 
打包后的执行文件运行失败 当打包的文件没有使用pyinstall -F -W 文件名.py命令进行打包时,执行文件运行失败,可以将执行程序拖入cmd控制台界面进行运行,可以查看到程序运行时的报错信息

你可能感兴趣的:(python,pycharm,开发语言)