Pyhton打包总结(pyinstaller)

 

在学《Leanrn Python the Hard Way》时做了一个文字游戏,想要分享给朋友玩。于是便想把程序打包成 .exe 文件,尝试了py2exe,出了很多问题,花了很多时间查来查去最后还是没有成功。然后试了pyinstaller,虽然也遇到了一些问题,但终于完成了。

(英文好的建议直接去看官方文档

 

、安装及基本操作

 

Pyinstaller可以使用pip安装,在命令行下输入下面这行就可以了。

 

 

如果下载安装包,那么要注意下载相应的win32/64版本,建议所有的程序都统一成32位或是64位版本,这样会减少很多问题。

 

安装完毕之后,就可以通过以下命令打包了

先转到主脚本所在的地址,例如:

 

 

然后执行如下命令:

 

其中start.py为主脚本,主脚本中调用的模块文件会被自动打包。第三个参数是操作命令,常用的命令有

 

基础的命令就这些,程序名和图标等建议在spec文件中设置。

 

二、文件调用(音频,图片等)

 

一开始打包时便不清楚文件调用问题,因此文件一旦移动到别处就没法正常调用。后来看到别人的教程,但这部分也是模棱两可,让人理解不了。后来结合官方文档和别人的教程,终于弄清楚了。

 

首先在脚本定义一个读取相对路径的函数:

 

然后在需要调用文件的地方用如下格式包裹:

 

然后在生成的.spec文件exe = EXE()中加入下面这行:

 

元组内的三个项:

第一个为代码中resource_path包裹的地址;

第二个是文件的实际地址;

第三个是打包进程序的文件名字。

 

这样打包后文件会被正确引用。

如下所示:

 

注意加地址前的r以及行尾的逗号,更新过spec文件后,再重新打包只需要执行pyinstaller start.spec 就可以了。

 

三、添加图标

 

图标的设置有两种方式,一种是在执行打包命令时加入下面这句:

 

第二种(推荐)是用文本编辑器或记事本打开执行打包后文件夹内新生成的xxx.spec文件,然后在exe =()中加入一行:

 

(见上面的代码第八行)

xxx.ico 为你要设置的图标文件,其他格式需要转换成ico格式,可在这里在线转换。

(图标文件要放在程序根目录下)

 

四、其他

 

  1. 64windows上打包的程序不能在32位上运行,反之却可以。
  2. 每次更改完代码或是spec文件,只需要再重新执行一下pyinsyaller start.spec -F就可以了

 

五、替代品

 

如果pyinstaller没有解决你的问题,那么你可以尝试一下下面这两个替代品:

py2exe

cx_Freeze

 

说说你的想法吧!

邮箱不会被公开,必填项已用*标出。

*

*