问题
为什么Pyinstaller不能使用goose
个文件?这是可执行创建者或我的代码的问题吗?
代码
from goose.Goose import Goose
url =
'http://sociedad.elpais.com/sociedad/2012/10/27/actualidad/1351332873_157836.html'
g = Goose({'debug':False,'enableImageFetching': False,'localStoragePath':'./tmp'})
article = g.extractContent(url=url)
#article.title
print article.cleanedArticleText[:150].encode("utf8","ignore")
来自Pyinstaller的错误日志
使用pyinstaller创建的程序无法在此路径中找到鹅文件:
IOError: Couldn't open file C:\Users\user\Desktop\dist\main.exe?118272\goose/resources/text/stopwords-en.txt
发生这种情况:
Traceback (most recent call last):
File "<string>", line 15, in <module>
File "C:\Users\user\Desktop\build\pyi.win32\main\out00-PYZ.pyz\goose.Goose",line 52, in extractContent
File "C:\Users\user\Desktop\build\pyi.win32\main\out00-PYZ.pyz\goose.Goose",line 59, in sendToActor
File "C:\Users\user\Desktop\build\pyi.win32\main\out00-PYZ.pyz\goose.Crawler", line 86, in crawl
File "C:\Users\user\Desktop\build\pyi.win32\main\out00-PYZ.pyz\goose.extractors", line 245, in calculateBestNodeBasedOnClustering
File "C:\Users\user\Desktop\build\pyi.win32\main\out00-PYZ.pyz\goose.text", line 97, in __init__
File "C:\Users\user\Desktop\build\pyi.win32\main\out00-PYZ.pyz\goose.utils",line 76, in loadResourceFile
IOError: Couldn't open file C:\Users\user\Desktop\dist\main.exe?118272\goose/resources/text/stopwords-en.txt
出了什么问题?
答案 0 :(得分:0)
似乎goose
需要数据文件以及正常操作的Python源。例如。它会查找goose/resources/text/stopwords-en.txt
。当您使用PyInstaller冻结Python应用程序时,如果goose
在标准文件系统位置查找其资源文件,则它们将不会出现,因为当您使用PyInstaller创建可执行文件时,所有文件都在安装程序中。
因此,您必须告诉PyInstaller将这些额外资源添加到您的可执行文件中,然后修改goose
代码,以便在从PyInstaller生成的exe运行时从备用位置获取其资源。
详细信息在Accessing Data Files标题下的PyInstaller手册中。