Scrapy:导入错误:没有名为items的模块。

21
当我尝试运行Scrapy时,出现了这个错误ImportError: No module named items。
我刚刚在items.py中添加了我想要抓取的东西列表,并且在spider.py中使用from spider.items import SpiderItem导入了该类。
不知道为什么它没有加载它...
包布局如下...
./spider
./spider/pipelines.py
./spider/settings.py
./spider/spiders
./spider/spiders/spider_spider.py
./spider/spiders/test.py
./spider/spiders/__init__.py
./spider/middlewares.py
./spider/__init__.py
./spider/items.py

你的中间句子没有意义。你可能在相对导入方面遇到了问题。你应该发布你的包布局,然后也许有人可以帮助你。 - mata
6个回答

28

来自这篇谷歌群组中的信息

你的爬虫模块与Scrapy项目模块同名,因此python试图相对于byub.py spider导入items。

你面临了Python导入的一个常见问题,请参见http://www.python.org/dev/peps/pep-0328

快速修复方法:

  • 将你的爬虫模块重命名为byub_org.py或类似名称。
  • 或在byub.py spider中使用from __future__ import absolute_import
  • 或将你的项目重命名为类似byubbot的名称。

1
谢谢Nick,但我已经找到并尝试解决了这个问题...但那不是问题所在,或者至少我没有找到解决方案... - jsjc

4

我遇到了这个问题,因为我的爬虫名称与Scrapy项目的名称相同。

只需重命名爬虫名称即可解决问题。


遇到了同样的问题,我将蜘蛛名称文件重命名为与项目不同的名称,然后问题得到解决。 - delpo

2

将你的爬虫模块重新命名是一个不错的解决方案。

但是在重命名后,别忘了删除相关的*.pyc文件,因为*.pyc文件起到了类似缓存的作用。


2

在不重命名任何文件的情况下,将from spider.items import SpiderItem更改为from .. import items并在代码中将项目称为items.SpiderItem


1
抱歉打扰了。尝试将文件./spider/__init__.py放入其中。
 import items

0
在你的spider.py文件中,导入语句后面缺少以下行:

class ProjectnamegoeshereSpider(BaseSpider):

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接