0

问题

为什么 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 创建的程序无法在此路径中找到 goose 文件:

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

怎么了?

4

1 回答 1

0

似乎goose除了 Python 源之外还需要数据文件才能正常运行。例如。它抬头goose/resources/text/stopwords-en.txt。当您使用 PyInstaller 冻结 Python 应用程序时,如果goose在标准文件系统位置查找其资源文件,它们将不存在,因为当您使用 PyInstaller 创建可执行文件时,所有文件都在安装程序中。

因此,您必须告诉 PyInstaller 将这些额外资源添加到您的可执行文件中,然后修改goose代码以在从 PyInstaller 生成的 exe 运行时从备用位置获取其资源。

详细信息在访问数据文件标题下的 PyInstaller 手册中。

于 2013-03-13T02:15:29.453 回答