python3.6用Pyinstaller打包程序

python一般不建议打包,基本上都是命令行运行,如果实在要打包python3可以用pyinstaller

请使用官方原版python打包!!!

Anaconda里内置了很多库,打包的时候打包了很多不必要的模块进去。

注意打包出来文件会非常大(原理就是简单粗暴直接把所有包都封装进去了)

比如8KB的程序打包后是292 MB。。。。。(看个人情况导入的包越多越大)


然后建议用pipenv搭建虚拟环境后打包。

#建立虚拟环境

pipenv install

#进入虚拟环境

pipenv shell

#安装模块

pip install 小工具.py里面用到的模块

#打包的模块也要安装

pip install pyinstaller

#开始打包

pyinstaller -Fw E:\test\url_crawler.py


这是不用虚拟环境打包的方法

首先安装2个库

pip install pyinstaller

pip install pywin32

或者去下载pywin32的exe安装包注意要和自己的python版本兼容

pyinstaller -F demo.py 

参数含义

-F指定打包后只生成一个exe格式的文件

-D–onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)

-c–console, –nowindowed 使用控制台,无界面(默认)

-w–windowed, –noconsole 使用窗口,无控制台

-p添加搜索路径,让其找到对应的库。

-i改变生成程序的icon图标

打包成功后同一目录下会出现dist,build,demo.spec 三个文件

打包好的exe文件在dist目录里面(其他都可以删了)



问题1:RecursionError: maximum recursion depth exceeded

 这是迭代数过高python默认为900,在demo.spec 文件头地二行添加下面语句

import sys

sys.setrecursionlimit(5000)

删除dist,build文件夹 然后cmd命令行执行解决

pyinstaller demo.spec


问题2:Exception: Cannot find existing PyQt5 plugin directories Paths checked: C:/qt5b/qt_1524647842210/_h_env/Library/plugins

手动新建上面的文件夹目录把pyqt5.dll,pyqt5qmlplugin.dll 两个文件放进去

每个人的报错路径都不一样请看自己的路径是什么,其实用-p 选项也应该能指定包路径的我没研究

删除dist,build文件夹 然后重新执行打包程序

pyinstaller  demo.spec


参考连接

https://www.zhihu.com/question/268397385/answer/611317903

你可能感兴趣的:(python3.6用Pyinstaller打包程序)