Python学习笔记(三、一些第三方库)

 

第三方库:使用前需要额外安装

安装第三方库需要使用pip工具

 

Pycharm第三方库的安装及使用方法

 

 

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) 文件

 

 

 

pyinstaller的使用和几个坑

 

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命令行):

pip install jieba

 

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))

 

 

 

-

posted @ 2020-03-23 20:35  jiamian22  阅读(630)  评论(0编辑  收藏  举报