pyinstaller 打包可执行文件过大的问题及过程中遇到的问题

最近利用pyqt5做了一个GUI程序,甲方要全提供exe文件,在conda环境下直接利用pyqt5打包成可执行文件的话,会将所有有关的、无关的库都打包进去,导致程序十分臃肿,打包完成后有900多兆,程序打开会变得十分缓慢并且执行也很慢。所以为了避免把用不到的库也打包进去,需要创建一个干净的虚拟环境。

首先Win +R 输出cmd打开终端,安装pipenv创造虚拟环境,输入:

pip install pipenv

再用图下命令激活虚拟环境:

pipenv shell

这个时候虚拟环境创建成功且被激活了,如下所示:

C:\Users\admin>pipenv shell
Launching subshell in virtual environment...
Microsoft Windows [版本 10.0.19044.2728]
(c) Microsoft Corporation。保留所有权利。

(admin--vUoXxCa) C:\Users\admin>

这个时候查看安装的库信息:

pip list

这个时候会发现虚拟环境下只有很少的几个库在里面,所以这个时候我们再安装所需要的库就行了。正常情况下利用如下指令安装如numpy此类的库是没有问题的:

pip install numpy

但是我在安装库的时候,却遇到了如下的报错信息。

(admin--vUoXxCa) C:\Users\admin>pip install matplotlib
Looking in indexes: https://repo.huaweicloud.com/repository/pypi/simple/
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', OSError(0, 'Error'))': /repository/pypi/simple/matplotlib/
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', OSError(0, 'Error'))': /repository/pypi/simple/matplotlib/
WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', OSError(0, 'Error'))': /repository/pypi/simple/matplotlib/
WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', OSError(0, 'Error'))': /repository/pypi/simple/matplotlib/
WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', OSError(0, 'Error'))': /repository/pypi/simple/matplotlib/
ERROR: Could not find a version that satisfies the requirement matplotlib (from versions: none)
ERROR: No matching distribution found for matplotlib

仿佛是网络的问题,尝试了换源,也并没有解决,后来发现是因为科学上网,使用代理导致的问题!所以此问题出现时,只需要关掉代理工具即可,但接下来还会出现安装速度过慢的问题,这个时候需要进行换源的操作。

可以利用如下指令进行永久换源的操作:

pip config set global.index-url https://repo.huaweicloud.com/repository/pypi/simple/

这里换的是华为云的源,清华源现在好像不太好用了。当然如果你不怕麻烦的话,也可以每次安装库的时候后加 -i 以及源地址就好了:

pip install pandas -i https://repo.huaweicloud.com/repository/pypi/simple

切记切记,一定要在虚拟环境中安装pyinstaller这个库,不然他还是会原有环境下的pyinstaller去打包程序,这个时候中间可能会出现找不到对应模块,或者动态链接库出问题的屁烂问题。

并且值得注意的是,在安装库的时候最好是指定版本,版本跟你调试运行时候的版本相同,不然打包完成以后会出现版本不兼容,会报如下动态链接库的问题:

ImportError: DLL load failed while importing ft2font: 找不到指定的模块

在安装好所需要的对应版本的库之后,再利用pyinstaller进行打包,就好了:

pyinstaller -F -i XXX.ico -w mypython.py

-F是打包为单独的一个执行文件(不带有其他文件夹),-i是添加程序的图标,-w是不带有控制台窗口,建议第一次打包的时候不要加-w,这样在运行时候报错的话,错误信息会出现在控制台窗口中,并且更值得注意的是,如果你的程序本身没有图形界面,那就更不要加-w的,这样就没有意义了,因为打开可执行文件,他什么窗口都不会出现。

最后打包的程序就变成了80多兆。从900多兆瘦身到80多兆,美滋滋。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值