从脚本运行Scrapy:找不到模块错误 - projectname.items不是包

时间:2017-09-28 11:52:06

标签: python-3.x scrapy

我尝试在docs中运行多个抓取工具。该脚本通过调用scrapy crawl crawler运行。

现在通过python crawler.py调用它,我收到以下错误:

  来自crawler.items的

导入LinkItem

     

ModuleNotFoundError:没有名为'crawler.items'的模块; 'crawler'不是包

import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from scrapy.crawler import CrawlerProcess

from crawler.items import LinkItem
from crawler.settings import DB_CREDS

有谁知道如何处理这个问题?

我的项目名为crawler。这可能是个问题吗?

层次:

Crawler
|-crawler
|  |-__pycache__
|  | |-...
|  |-spiders
|  | |-__pycache__
|  | |-__init__.py
|  | |-crawler.py
|  |-__init__.py
|  |-items.py
|  |-middlewares.py
|  |-pipelines.py
|  |-settings.py
|-scrapy.cfg

1 个答案:

答案 0 :(得分:0)

我认为这是一种Python路径问题。您使用python解释程序而非Scrapy运行脚本,因此您必须确保Python知道您的程序包在哪里。如果您以Scrapy命令运行,那么scrapy会在scrapy.cfg处理它。

解决问题的最简单方法是将项目路径追加到PYTHONPATH。例如export PYTHONPATH=YOUR_PROJECT_PATH:$PYTHONPATH。您可能需要将其添加到.bashrc文件中。

还有其他解决方案,例如,按照软件包的分发将项目安装到site-packages python库中。

感谢。