Scrapy始终在命令提示符下运行相同的命令

Scrapy始终在命令提示符下运行相同的命令,scrapy,scrapy-spider,Scrapy,Scrapy Spider,我正在尝试在Windows10的BashOnUbunty上学习Scrapy。我使用genspider命令创建了一个spider(yelprest),然后通过创建spider文件(遵循官方教程)直接创建了另一个spider(quotes_spider) 第一个spider尚未测试,但我尝试使用第二个spider完成教程,当我尝试运行时,我得到一个指向第一个spider的错误。另外,当我尝试运行任何其他类似于version的scrapy命令时,我会得到与上面相同的错误。以下是错误: (BashEnv

我正在尝试在Windows10的BashOnUbunty上学习Scrapy。我使用genspider命令创建了一个spider(yelprest),然后通过创建spider文件(遵循官方教程)直接创建了另一个spider(quotes_spider)

第一个spider尚未测试,但我尝试使用第二个spider完成教程,当我尝试运行时,我得到一个指向第一个spider的错误。另外,当我尝试运行任何其他类似于version的scrapy命令时,我会得到与上面相同的错误。以下是错误:

(BashEnv) root > scrapy version
Traceback (most recent call last):
  File "/mnt/s/BashEnv/bin/scrapy", line 11, in <module>
    sys.exit(execute())
  File "/mnt/s/BashEnv/local/lib/python2.7/site-packages/scrapy/cmdline.py", line 148, in execute
    cmd.crawler_process = CrawlerProcess(settings)
  File "/mnt/s/BashEnv/local/lib/python2.7/site-packages/scrapy/crawler.py", line 243, in __init__
    super(CrawlerProcess, self).__init__(settings)
  File "/mnt/s/BashEnv/local/lib/python2.7/site-packages/scrapy/crawler.py", line 134, in __init__
    self.spider_loader = _get_spider_loader(settings)
  File "/mnt/s/BashEnv/local/lib/python2.7/site-packages/scrapy/crawler.py", line 330, in _get_spider_loader
    return loader_cls.from_settings(settings.frozencopy())
  File "/mnt/s/BashEnv/local/lib/python2.7/site-packages/scrapy/spiderloader.py", line 61, in from_settings
    return cls(settings)
  File "/mnt/s/BashEnv/local/lib/python2.7/site-packages/scrapy/spiderloader.py", line 25, in __init__
    self._load_all_spiders()
  File "/mnt/s/BashEnv/local/lib/python2.7/site-packages/scrapy/spiderloader.py", line 47, in _load_all_spiders
    for module in walk_modules(name):
  File "/mnt/s/BashEnv/local/lib/python2.7/site-packages/scrapy/utils/misc.py", line 71, in walk_modules
    submod = import_module(fullpath)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/mnt/s/BashEnv/Scrapy/Scrapy/spiders/yelprest.py", line 14
    rules = (
    ^
IndentationError: unexpected indent
(BashEnv) root >
(BashEnv)root>scrapy版本
回溯(最近一次呼叫最后一次):
文件“/mnt/s/BashEnv/bin/scrapy”,第11行,在
sys.exit(execute())
文件“/mnt/s/BashEnv/local/lib/python2.7/site packages/scrapy/cmdline.py”,执行中的第148行
cmd.crawler_process=CrawlerProcess(设置)
文件“/mnt/s/BashEnv/local/lib/python2.7/site packages/scrapy/crawler.py”,第243行,在__
超级(爬虫进程,自我)。\uuuuu初始化\uuuuu(设置)
文件“/mnt/s/BashEnv/local/lib/python2.7/site packages/scrapy/crawler.py”,第134行,在__
self.spider\u loader=\u get\u spider\u loader(设置)
文件“/mnt/s/BashEnv/local/lib/python2.7/site packages/scrapy/crawler.py”,第330行,在“获取蜘蛛”加载程序中
从\u设置返回加载程序\u cls.(settings.frozencopy())
文件“/mnt/s/BashEnv/local/lib/python2.7/site packages/scrapy/spiderloader.py”,第61行,在from_设置中
返回cls(设置)
文件“/mnt/s/BashEnv/local/lib/python2.7/site packages/scrapy/spiderloader.py”,第25行,在__
self.\u加载\u所有\u蜘蛛()
文件“/mnt/s/BashEnv/local/lib/python2.7/site packages/scrapy/spiderloader.py”,第47行,在所有spider中
对于walk_模块中的模块(名称):
文件“/mnt/s/BashEnv/local/lib/python2.7/site packages/scrapy/utils/misc.py”,第71行,在walk_模块中
子模块=导入模块(完整路径)
文件“/usr/lib/python2.7/importlib/_init_uuu.py”,第37行,在导入模块中
__导入(名称)
文件“/mnt/s/BashEnv/Scrapy/Scrapy/spiders/yelprest.py”,第14行
规则=(
^
缩进错误:意外缩进
(BashEnv)root>

我不明白为什么我发出的任何命令都会出现相同的错误。

您的
yelprest.py
文件(在第14行或之前)中有一些错误:它不是有效的Python。修复此错误,所有操作都会正常进行。请确保您的文件正确缩进,并且不要混合空格和制表符

编辑:

要确保错误在此文件中,只需将其删除。如果没有此文件一切正常,则错误必须存在


更新:

您的问题并没有清楚地说明这一点,但在您的评论中,您的问题是“为什么Scrapy为每个命令加载我的spider代码?”。答案是:因为Scrapy就是这样做的。有些命令只能在项目内运行,如
check
crawl
。有些命令可以在任何地方运行,如
startproject
。但在Scrapy项目内,任何命令都会加载所有代码。Scrapy就是这样做的

例如,我有一个名为
crawler
(我知道,非常具有描述性!)的项目:


这看起来像是python错误。IndentationError表示yelprest.py文件有问题。文件是否正确缩进?是否混合了制表符和空格?否,关键是上面是“scrapy版本”的输出命令-这是完全不相关的。对于我给出的任何命令,我都得到了上面的结果-我给出的每个命令都指向我使用genspider命令创建的第一个蜘蛛。我从该位置删除了该蜘蛛,并且我能够正常运行。我从文档/论坛中看到,我应该能够拥有多个蜘蛛在同一个项目中。但我不清楚这一特定行为。如果在项目目录中运行scrapy命令,如果文件包含错误,它将崩溃。即使该命令不相关。这就是为什么我认为错误在yelprest.py中。是的,在同一个项目中可以有多个爬行器。它指向缩进错误,wh我已经验证了它的正确性。但我的问题是,为什么它会来执行这个蜘蛛,即使我没有指向它(例如,我刚刚运行了一个版本命令)。现在它是有意义的。谢谢Djunzu!
$ cd ~
$ scrapy version
Scrapy 1.4.0
$ cd crawler/
$ scrapy version
2017-10-31 14:47:42 [scrapy.utils.log] INFO: Scrapy 1.4.0 started (bot: crawler)
2017-10-31 14:47:42 [scrapy.utils.log] INFO: Overridden settings: {...}
Scrapy 1.4.0