前言
相信大家都试过用Pyinstaller将Python文件打包成exe,来发给其他没有安装Python环境的用户使用。
但通常情况下,打包生成的exe文件都很大,因为Pyinstaller默认是把本地所有安装的Python库都打包进去。
这时,创建一个虚拟环境就是最好的选择,然后在虚拟环境中进行打包。
这里介绍打包QT5界面的操作。
解决
安装Pipenv
pipenv 是用来管理虚拟环境,使用 pip install pipenv
安装 pipenv,pip show pipenv
检查是否安装成功。
添加环境变量
打包QT5需要用到QT5的platforms,所以需要添加环境变量。
新建QT_QPA_PLATFORM_PLUGIN_PATH
,路径是platforms路径。比如我电脑下的platforms路径是D:\Programfiles\anaconda3\Lib\site-packages\PyQt5\Qt5\plugins\platforms
。
重启电脑,让环境变量生效。
具体操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
pipenv install --three
pipenv shell
pipenv install requests pipenv install pyinstaller
pipenv run pyinstaller -F -w main.py -i shop.ico
|
Pipenv常用命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| [root@localhost ~]
[root@localhost myproject] [root@localhost myproject] [root@localhost myproject] [root@localhost myproject] [root@localhost myproject] [root@localhost myproject]
[root@localhost myproject]
(myproject) [root@localhost myproject] (myproject) [root@localhost myproject] (myproject) [root@localhost myproject]
(myproject) [root@localhost myproject] (myproject) [root@localhost myproject]
(myproject) [root@localhost myproject]
[root@localhost myproject] [root@localhost myproject]
[root@localhost myproject]
[root@localhost myproject]
[root@localhost myproject]
[root@localhost myproject]
(myproject) [root@localhost myproject] (myproject) [root@localhost myproject] (myproject) [root@localhost myproject]
(myproject) [root@localhost myproject]
(myproject) [root@localhost myproject]
(myproject) [root@localhost myproject]
(myproject) [root@localhost myproject]
(myproject) [root@localhost myproject]
(myproject) [root@localhost myproject]
(myproject) [root@localhost myproject]
[root@localhost myproject]
|
Pyinstaller打包参数
pyinstaller打包有不少可选参数,可以根据自己的需要进行添加。
-F
:打包单个文件,产生一个文件用于部署(默认),如果代码都写在一个 .py 文件时使用,项目有多个文件时不要使用
-D
:打包多个文件,产生一个目录用于部署(默认),用于框架编写的代码打包
--key=keys
:使用 keys 进行加密打包
-d
:产生 debug 版本的可执行文件
-p
:用来添加程序所用到的包的所在位置,设置导入路径,可以用 ; ( Linux 使用 :)分割来指定多个目录。
-w
:表示不用控制台窗口,使用 Windows 子系统执行,当程序启动的时候不会打开命令行(只对 Windows 有效)
-c
:表示打开控制台窗口,使用控制台子系统执行,当程序启动的时候会打开命令行(默认)(只对 Windows 有效)
-i
:将 file.ico 添加为可执行文件的资源,改变程序的图标(只对 Windows 系统有效)
注意的是,如果是打包QT5的界面,在其他电脑使用,还需要拷贝QT5的platforms,放到其他电脑(路径随意),然后像上面步骤一样添加环境变量,重启电脑,让环境变量生效。