使用jieba分词+PyInstaller进行打包时出现的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/AllenLink/article/details/79799149

使用jieba分词+PyInstaller进行打包时出现的问题

  在使用jieba分词库的时候出现的问题,在这里写博客记录下,方便自己以后查询。小白博客,大神勿喷。

目录

环境:

  • 操作系统:windows10
  • 语言:Python34
  • IDE: PyCharm

问题现象:

  本地代码执行时,使用jieba分词库,没有问题。原代码如下:

# encoding = utf - 8
import jieba


def word_segmentation(sentence):
    words_generator = jieba.cut(sentence)  # 返回的是一个generator对象,foreach 后可以得出字符串
    word_list = list()
    for word in words_generator:
        word_list.append(word)
    return word_list


if __name__ == '__main__':
    words = word_segmentation("人生难得几回搏")
    for aword in words:
        print(aword)

执行后结果如图:
代码执行结果

使用PyInstaller打包成单独的exe执行文件后,引发如下异常:
打包成exe文件后异常

  bz一开始以为问题出在PyInstaller,没有将jieba的依赖包打包进exe文件中。后来参考
http://www.lxway.com/456269486.htm
发现是jieba库在运行时会去默认Python路径下去寻找dict.txt文件。而我们使用PyInstaller打包时,并没有将该dict.txt文件打包。
  理解了出错的原因,解决方案有如下两种。


方案一:

  因为将python程序打包成exe文件的主要目的是因为并不是每一台机器都有Python环境。而如果在不修改代码的情况下,最简单的方式就是在查找的位置上加上该文件。bz查找dict.txt的位置是C:\Users\HP\AppData\Local\Temp\_MEI272322\jieba(根据自己的查找路径),然后将该文件保存在这个路径下。dict.txt文件在安装的jieba依赖包中。


方案二:

首先在windows下创建这么长的目录不太方便,作为一个coder最好的方式还是直接修改代码。修改jieba查找dict.txt文件的路径,为了方便部署,最好将查找路径设为相对于exe文件的路径。bz的做法如下:

1.首先修改代码中jieba库的dict.txt加载路径。

# encoding = utf - 8
import jieba
jieba.set_dictionary("./dict.txt")  //指定dict.txt加载路径,为了方便部署,使用相对路径。
jieba.initialize()                  //jieba库初始化。


def word_segmentation(sentence):
    words_generator = jieba.cut(sentence)  # 返回的是一个generator对象,foreach 后可以得出字符串
    word_list = list()
    for word in words_generator:
        word_list.append(word)
    return word_list


if __name__ == '__main__':
    words = word_segmentation("人生难得几回搏")
    for aword in words:
        print(aword)

2.打包后将dict.txt文件放置在和exe文件同一级目录下。

将打包后文件在放置在exe同一级目录下

3.最后的运行结果。

最后的运行结果

参考链接

http://www.lxway.com/456269486.htm

展开阅读全文

没有更多推荐了,返回首页