当前位置:   article > 正文

Python打包工具pyinstaller的常用操作_在u盘或电脑外部存储中使用pyinstaller进行打包

在u盘或电脑外部存储中使用pyinstaller进行打包

pyinstaller 是python的一个打包工具,可以将python源文件打包成exe(windows系统)可执行程序。

安装方法:

pip install pyinstaller

以hello.py举例

  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Tue Apr 7 16:26:58 2020
  4. @author: matrix273
  5. """
  6. print('Hello World!')

普通的打包方法为

pyinstaller hello.py #打包到文件夹

以这种无参数方式打包的程序包含在 \dist\hello 目录下,个人更倾向于添加 "-F"参数来打包到一个文件,即

pyinstaller -F hello.py #打包为一个文件

在测试时发现双击运行打包的 hello.exe会一闪而过,特别是需要调试程序时,不能看到报错排查起来比较麻烦,针对此,有两个思路.

1:给python程序添加一个 input() 等待外部输入的命令.这样窗口就会等待键盘输入.这样就不会一闪而过.类似这样:

  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Tue Apr 7 16:26:58 2020
  4. @author: matrix273
  5. """
  6. print('Hello World!')
  7. input()

2:在命令提示符里面运行hello.py,这样可以获得所有输出而不用担心太快看不到报错的问题.

 

进阶部分:

1:添加外部文件

但是个别时候我们的代码需要调用外部的文件,为了打包后的程序在其他电脑可用,需要把这些外部文件一并打包.这里需要一个函数来定位外部文件的位置

  1. import os #导入os包
  2. def resource_path(relative_path):
  3. """ Get absolute path to resource, works for dev and for PyInstaller """
  4. base_path = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__)))
  5. return os.path.join(base_path, relative_path)

将这个函数放在读取外部文件之前,且将外部文件的路径修改为 resource_path('external_file'),这样打包后的文件就可以找到外部文件了,同时打包时需要添加额外的参数: --add-data external_file;.(注意后面有两个符号一个分号";",一个点"." ,linux系统替换为一个冒号":",一个点".")

pyinstaller -F hello.py --add-data external_file;.

相关帮助如下图

2:修改默认程序图标

打包时添加一个 -i icon.ico 参数,即

pyinstaller -F -i icon.ico hello.py

3,添加版本信息

这里需要另外一个pyinstaller自带的grab_version.py来获取版本信息.查看的这个程序所在的路径方法如下:

pip show pyinstaller

通过下图得知pyinstaller包的路径在 C:\ProgramData\Anaconda3\Lib\site-packages,对应的grab_version.py文件在:

C:\ProgramData\Anaconda3\Lib\site-packages\PyInstaller\utils\cliutils\grab_version.py

我们可以把grab_version.py复制到当前文件夹下,然后获取一个包含版本信息的 exe程序文件的信息,然后修改为自己的版本.

比如获取chrome.exe的版本信息

python grab_version.py chrome.exe

操作如下图:

修改file_version_info.txt为自己想要的信息.然后在打包时添加参数 --version-file file_version_info.txt 即可完成添加版本信息

pyinstaller -F hello.py -i chrome.exe --version-file file_version_info.txt 

通过上面的命令就可以打包一个包含chrome.exe 图标以及版本信息的 hello.py文件

如果需要一个无console窗口的单一程序,可以添加 -w 参数.

pyinstaller -F hello.py -i chrome.exe --version-file file_version_info.txt -w

以上就是pyinstaller的常用操作,记录一下,同时分享给有需要的同学.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/657257
推荐阅读
相关标签
  

闽ICP备14008679号