jieba
jieba copied to clipboard
你好~ 在打包程序的时候出现了问题
你好~我在我的一个小项目里使用了结巴分词,首先对您的努力表示感谢~
我在使用py2exe打包我的程序的时候,其他的模块都没有出现问题,打包能够成功,但在运行的时候一直显示
IOError: [Errno 2] No such file or directory: 'E:\python\links\romeo\dist\l ibrary.zip\jieba\finalseg\prob_start.py'
我单独写了一个.py文件,只有一句话: import jieba seg=jieba.cut('hello jieba')
打包,但运行的时候也是上面的那个结果。
我不知道您是否打包过使用了结巴的程序,如果有,您遇到过这样的问题吗? 或者您知道问题可能出现在哪吗? 谢谢啦~
@lisnb , 我没有用过py2exe。看错误信息,'E:\python\links\romeo\dist\l ibrary.zip\jieba\finalseg\prob_start.py' 这个py文件被打包在zip里面了,所以读不出来。等会我装个py2exe试一试
@fxsjy 嗯,非常感谢您的回复
您试过之后应该就会看到,所有的依赖项都会被打包在一个zip文件里(如果没有其他设置的话)
也有可能是py2exe的问题,那么您用过其他的什么打包的工具打包过使用了结巴的程序吗?
@lisnb ,试了一下,确实不行。 路径问题不好处理啊,数据文件应该怎么放?
@fxsjy 网上是这么说的,不知道你问的是不是这个
from distutils.core import setup import glob import py2exe
setup(console=["myscript.py"], data_files=[("bitmaps", ["bm/large.gif", "bm/small.gif"]), ("fonts", glob.glob("fonts*.fnt"))], ) 说明:data_files选项将创建一个子目录dist\bitmaps,其中包含两个.gif文件;一个子目录dist\fonts,其中包含了所有的.fnt文件。
我在想的是,好像分词的字典没有被收进包里,为什么代码文件也没有呢,好奇怪。我以前也没有打包过,我也研究一下...
问题还在,我尝试手工把prob_start.py插入到zip包中,可这也不是解决方法,而且不管用。
@yangboz , 这个问题解决了,你git pull更新一下。 我用cxfree试验成功了。
测试程序: hello.py
#encoding=utf-8
import jieba
jieba.set_dictionary("./dict.txt")
jieba.initialize()
s="我研究生命起源。"
print " ".join(jieba.cut(s))
dict.txt 放在hello.py 同级目录。
pull下来安装最新的jieba 代码后,引用“jieba.set_dictionary("./dict.txt")jieba.initialize()” 路径错误信息是:jieba\posseg..dict.txt; 不用“jieba.set_dictionary("./dict.txt")jieba.initialize()” 后的错误信息是:jieba\posseg\dict.txt;
@yangboz , sorry,昨天的更新没有解决posseg读词典的路径问题,麻烦你再pull一下试一试。 下面是我的测试程序:
#encoding=utf-8
import jieba
jieba.set_dictionary("./dict.txt") #相对路径
#jieba.set_dictionary("c:/tmp/dict.txt") #也支持绝对路径
jieba.initialize()
from jieba import posseg
s="我研究生命起源。"
print " ".join(jieba.cut(s))
for w in posseg.cut(s):
print w.word,w.flag
pull到最新代码,最后还有提示提示 File "genericpath.pyc", line 54,in getmtime WindowError: [Error 3] " "xxx\dist\library.zip\jieba\dict.txt"
我用的是 py2exe,和cxtree应该差不多。
@yangboz , 必须调用jieba.set_dictionary明确指出词典的路径,否则会在默认位置寻找dict.txt。但是被py2exe打包之后就找不到了。
pull到最新的,代码有看到有变化,pseg_cut 有过滤一些空白词汇了,但是最后打包成exe的时候,同时“明确指出词典的路径”后,原来utf-8编码到exe运行的时候成了“cp936”了,还不确定是py2exe的问题。
车库咖啡会场现场解决了:-) 总结如下: str()操作中文字符+操作,python转换尝试寻找系统默认的编码; dict定义中文需要"\u"; 文件io输出也需要"encode('utf-8)", py2exe中文问题解决.
@yangboz , 昨晚很有意思,大牛们在上面讲,咱俩在调程序。
你好,这个问题解决了吗?我也碰到相同的问题,很懊恼,jieba官网上说,支持py2exe的,但是制作后,还是不行
在上次来源大会现场作者帮助下,解决了,麻烦你贴下你的错误信息!
Send from Yangbo's iPhone.
On 2013年10月23日, at 15:17, AlgorithmFan [email protected] wrote:
你好,这个问题解决了吗?我也碰到相同的问题,很懊恼,jieba官网上说,支持py2exe的,但是制作后,还是不行
— Reply to this email directly or view it on GitHub.
你好,按照你上面说的方法,加上 jieba.set_dictionary("dict.txt") jieba.initialize() 仍然出现下面的错误。
Traceback (most recent call last):
File "mainWidget.py", line 6, in
看错误信息还是这个dict.txt的路径问题,这个文档一直说的很晦涩,你先参考下我这打包程序中的路径 https://github.com/yangboz/hairy-avenger/tree/master/KingOfProgrammer/src/Q2
谢谢,已经解决,犯了低级错误,应该将 jieba.set_dictionary("dict.txt") jieba.initialize() 直接放在import jieba后面,然后再进行import jieba.posseg as pseg,这样才可以在程序中修改dict.txt的路径,再次表示感谢。
Building prefix dict from C:\Users\game\Desktop\qt\test\dist\dict.txt ...
Loading model from cache c:\users\game\appdata\local\temp\jieba.ua7197607c9829a7854ca3e54b4005544.cache
Loading model cost 0.355 seconds.
Prefix dict has been built succesfully.
Traceback (most recent call last):
File "test.py", line 7, in
from jieba import analyse
File "jieba\analyse_init_.pyo", line 9, in
File "jieba\analyse\tfidf.pyo", line 65, in init
File "jieba\analyse\tfidf.pyo", line 42, in init
File "jieba\analyse\tfidf.pyo", line 47, in set_new_path
IOError: [Errno 2] No such file or directory: 'C:\Users\game\Desktop\qt\test\dist\library.zip\jieba\analyse\idf.txt
idf.txt还是不行
`# -- coding: utf-8 -- import sys sys.path.append("../") import jieba jieba.set_dictionary("./dict.txt") jieba.initialize() from jieba import analyse jieba.analyse.set_idf_path("./idf.txt")
if name == 'main': seg_list = jieba.cut("我来到北京清华大学", cut_all=False) print("Default Mode: " + "/ ".join(seg_list)) # 默认模式
s = "此外,公司拟对全资子公司吉林欧亚置业有限公司增资4.3亿元,增资后,吉林欧亚置业注册资本由7000万元增加到5亿元。吉林欧亚置业主要经营范围为房地产开发及百货零售等业务。目前在建吉林欧亚城市商业综合体项目。2013年,实现营业收入0万元,实现净利润-139.13万元。"
for x, w in jieba.analyse.extract_tags(s, withWeight=True):
print('%s %s' % (x, w))`
很简单的代码
还是不行哈
个人经验,win上面打包的话用pyinstaller比较简单一些,py2exe和cxfreeze我都没太学会.