Python学习笔记(三、一些第三方库)
第三方库:使用前需要额外安装
安装第三方库需要使用pip工具
Pyinstaller库
将编写的扩展名为.py的Python源代码转换成无需源代码的可执行文件
用可执行文件的方式来执行一段程序,而不是直接用源代码
PyInstaller库是第三方库 - 官方网站: http://www.pyinstaller.org
Pyinstaller库的安装
(cmd命令行) pip install pyinstaller
安装后如果提示Successfully installed,表明安装成功
Pyinstaller库的使用
先找到源代码,在源代码所在目录下通过Windows的命令行(不要使用IDLE环境下的交互编程环境,因为Pyinstaller是命令行的执行程序,不是Python下的执行指令)
在源代码目录下面:
(cmd命令行)pyinstaller -F <文件名.py>
执行之后打开目录:
新增如下3个文件夹,前两个文件夹可删,而dist中生成一个与源文件名一致的文件名
Pyinstaller库常用参数
参数 描述
-h 查看帮助
-v,--version 查看 PyInstaller 版本
--clean 清理打包过程中的临时文件(比如:bulid、pyvache)
-D,--onedir 默认值,生成dist文件夹(不推荐)
-F,--onefile 在dist文件夹中只生成独立的打包文件(推荐)
-i <图标文件名.ico> 指定打包程序使用的图标 (icon) 文件
1. 命令使用pyinstaller和pyinstaller.exe结果都是一样的
2.-w是不显示命令窗口, -i 图标文件的路径 这是改变图标的,但是我发现只能改变任务栏里的和命令窗口的图标,并不能改变exe文件的图标。另外这些参数要加载pyinstaller和路径中间。
3.有一些代码需要调用一些图片和资源文件的,这是不会自动导入的,需要你自己手动复制进去才行。不然exe文件运行时命令窗口会报错找不到这个文件。
4.也是最坑的一点。就是当你使用错误的参数去打包或者打包到一半中断,等等此类运行到一半没了的情况。会导致你原来的py文件变成一个0KB的空文件。里面的代码会全部消失!!!所以以后需要有个良好的习惯,就是复制一份代码出来,用这个副本进行打包。并且参数出错,或者打错了导致失败时,检查下副本文件的py文件是否还存在再继续重新打包,不然打出来的就是空的文件,自然一直闪退,因为压根没内容。
5.写代码的时候应当有个良好的习惯,用什么函数导什么函数,不要上来import整个库,最后你会发现你一个100KB的代码打包出来有500MB,全是库,简直无语
关于安装cmd命令行安装pyinstaller库失败的解决方法
pyinstaller 库的安装和使用图文教程
我们开发的Python程序想要发布出去,那么我们如何打包成可执行文件exe呢
PyInstaller是一个十分有用的第三方库,它能够在Windows、Linux、Mac OS X 等操作系统下将 Python 源文件打包,通过对源文件打包,Python 程序可以在没有安装 Python 的环境中运行,也可以作为一个独立文件方便传递和管理。PyInstaller 需要在命令行(控制台)下用pip 工具安装,如下:
1、我们安装了pip后可直接通过命令窗口进行安装pip install pyinstaller 回车
2、PyInstaller 的官方网站网址为 http://www.pyinstaller.org/。PyInstaller 库会自动将 PyInstaller 命令安装到 Python 解释器目录中,与 pip 或 pip3 命令路径相同,因此可以直接使用。使用PyInstaller 库十分简单,请注意,由于 PyInstaller 不支持源文件命中有英文句号(.)存在,假设
dpython.py 文件在 D:\codes 目录中,命令如下:
:\>pyinstaller dpython.py
或者
:\>pyinstaller D:\codes\dpython.py
执行完毕后,源文件所在目录将生成 dist 和 build 两个文件夹。其中,build 目录是 pyinstaller 存储临时文件的目录,可以安全删除。最终的打包程序在 dist 内部的 dpython 目录中。目录中其他文件是可执行文件 dpython.exe 的动态链接库。可以通过-F 参数对 Python
源文件生成一个独立的可执行文件,如下:
:\>pyinstaller -F dpython.py
执行后在 dist 目录中出现了 dpython.exe 文件,没有任何依赖库,执行它即可。使用 PyInstaller 库需要注意以下问题:文件路径中不能出现空格和英文句号(.);源文件必须是 UTF-8 编码,暂不支持其他编码类型。采用 IDLE编写的源文件都保存为 UTF-8 编码形式,可直接使用。PyInstaller
有一些常用参数,如下所示:
-h, --help 查看帮助
-v, --version查看 PyInstaller 版本
--clean清理打包过程中的临时文件
-D, --onedir默认值,生成 dist 目录
-F, --onefile在 dist 文件夹中只生成独立的打包文件第
-p DIR, --paths DIR 添加 Python 文件使用的第三方库路径
-i <.ico or .exe,ID or .icns>,--icon <.ico or .exe,ID or .icns >指定打包程序使用的图标(icon)文件
PyInstaller 命令不需要在 Python 源文件中增加代码,只需要通过命令行进行打包即可。-F 参数最为常用,对于包含第三方库的源文件,可以使用-p 添加第三方库所在路径。如果第三方库由 pip 安装且在Python 环境目录中,则不需要使用-p 参数。
jieba库
jieba库是优秀的中文分词第三方库
- 中文文本需要通过分词获得单个的词语
- jieba是优秀的中文分词第三方库,需要额外安装
- jieba库提供三种分词模式,最简单只需掌握一个函数
jieba库的安装(cmd命令行):
jieba库的使用
jieba库分词的原理:
Jieba分词依靠中文词库
- 利用一个中文词库,确定汉字之间的关联概率
- 汉字间概率大的组成词组,形成分词结果
- 除了分词,用户还可以添加自定义的词组
jieba分词的三种模式:精确模式、全模式、搜索引擎模式
- 精确模式:把文本精确的切分开,不存在冗余单词
- 全模式:把文本中所有可能的词语都扫描出来,有冗余
- 搜索引擎模式:在精确模式基础上,对长词再次切分
jieba库常用函数:
实例:
中文文本词频统计:
import jieba txt = open("threekingdoms.txt", "r", encoding="utf-8").read() words = jieba.lcut(txt) counts = {} for word in words: if len(word)==1: continue else : counts[word] = counts.get(word, 0)+1 lt = list(counts.items()) lt.sort(key = lambda x:x[1], reverse = True) #由大到小的排序 for i in range(15): word, count = lt[i] print("{0:<10}{1:>5}".format(word, count))
中文文本人物出场统计:
import jieba txt = open("threekingdoms.txt", "r", encoding="utf-8").read() excludes = {"将军", "却说", "荆州", "二人", "不可", "不能", "如此"} words = jieba.lcut(txt) counts = {} for word in words: if len(word)==1: continue elif word == "诸葛亮" or word == "孔明曰": rword = "孔明" elif word == "关公" or word == "云长": rword = "关羽" elif word == "玄德" or word == "玄德曰": rword = "刘备" elif word == "孟德" or word == "丞相": rword = "曹操" else : rword = word counts[rword] = counts.get(rword, 0)+1 for word in excludes: del counts[word] lt = list(counts.items()) lt.sort(key = lambda x:x[1], reverse = True) #由大到小的排序 for i in range(10): word, count = lt[i] print("{0:<10}{1:>5}".format(word, count))
-