2013-04-14 55 views
0

我有一个django项目,我使用nltk。我得到的分割错误,而试图Python Scrapy分割错误

import nltk 

我发现确切的行它发生在哪里,它的collocations.py:38。 我也发现,只有在Django的unit-tests和django manage.py shell(实际上shell_plus,但我不会改变某些东西),但在自定义管理命令中(这可能意味着我在生产中不会得到这个错误)

我用django django 1.4.5,nltk 2.0.4,python 2.7.3。

谢谢!

UPDATE:更新蟒2.7.4并没有影响

UPDATE:更新numpy的的1.7.1和SciPy的到0.12.0没有影响

UPDATE :我发现声明,导致段错误(我想,尽可能多的我把它从模块范围移到功能范围,这导致段错误不会发生)

from scrapy.crawler import CrawlerProcess 

这是从爬行scrapy框架的类,我用它在自定义模块中执行scrapy蜘蛛作为python脚本。看起来segfault不是NLTK故障,而是scrapy。可能不知怎的,这个班改写了nltk的一些数据,这就是为什么它是分段式的。

+0

[collocations.py:38](https://github.com/nltk/nltk/blob/master/nltk/collocations.py#L38)是'from nltk.util import ingrams'。 ['nltk.util'](https://github.com/nltk/nltk/blob/master/nltk/util.py)不会导入任何可能导致段错误的东西;在导入树下面,它似乎都来自stdlib。你确定这是正确的吗? – Dougal

+0

@Dougal感谢您的关注!我发现,这不是NLTK,它是segfaulted,但scrapy – eviltnan

回答

1

我和CrawlerProcess有同样的问题。 Scrapy未能安装libxml2。尝试输入到命令提示符下:

easy_install lxml 
pip install scrapy --upgrade 

我的程序在此之后正确执行。