gpt4 book ai didi

python - Scrapy 自定义项目命令 : "ImportError: No module named commands"

转载 作者:太空宇宙 更新时间:2023-11-04 03:31:51 25 4
gpt4 key购买 nike

我正在尝试制作一个 Scrapy 自定义项目命令来运行蜘蛛。我找到了 Register commands via setup.py entry points并做了以下事情:

  1. mkdir 命令

  2. cd 命令

  3. 创建命令文件crawlall.py:

    from scrapy.commands import ScrapyCommand
    from scrapy.utils.project import get_project_settings
    from scrapy.crawler import Crawler

    class Command(ScrapyCommand):

    requires_project = True

    def syntax(self):
    return '[options]'

    def short_desc(self):
    return 'Runs all of the spiders'

    def run(self, args, opts):
    settings = get_project_settings()

    for spider_name in self.crawler.spiders.list():
    crawler = Crawler(settings)
    crawler.configure()
    spider = crawler.spiders.create(spider_name)
    crawler.crawl(spider)
    crawler.start()

    self.crawler.start()
  4. COMMANDS_MODULE = 'myprojectname.commands' 添加到 settings.py

  5. 创建了 setup.py:

    from setuptools import setup, find_packages

    setup(name='scrapy-mymodule',
    entry_points={
    'scrapy.commands': [
    'crawlall=cnblogs.commands:crawlall',
    ],
    },
    )
  6. 使用 scrapy crawlall 运行项目命令,抛出以下错误:

    Traceback (most recent call last):
    File "/usr/local/bin/scrapy", line 9, in <module>
    load_entry_point('Scrapy==1.0.0rc2', 'console_scripts', 'scrapy')()
    File "/usr/local/lib/python2.7/site-packages/Scrapy-1.0.0rc2-py2.7.egg/scrapy/cmdline.py", line 122, in execute
    cmds = _get_commands_dict(settings, inproject)
    File "/usr/local/lib/python2.7/site-packages/Scrapy-1.0.0rc2-py2.7.egg/scrapy/cmdline.py", line 50, in _get_commands_dict
    cmds.update(_get_commands_from_module(cmds_module, inproject))
    File "/usr/local/lib/python2.7/site-packages/Scrapy-1.0.0rc2-py2.7.egg/scrapy/cmdline.py", line 29, in _get_commands_from_module
    for cmd in _iter_command_classes(module):
    File "/usr/local/lib/python2.7/site-packages/Scrapy-1.0.0rc2-py2.7.egg/scrapy/cmdline.py", line 20, in _iter_command_classes
    for module in walk_modules(module_name):
    File "/usr/local/lib/python2.7/site-packages/Scrapy-1.0.0rc2-py2.7.egg/scrapy/utils/misc.py", line 63, in walk_modules
    mod = import_module(path)
    File "/usr/local/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
    ImportError: No module named commands

我该怎么办?我的错误在哪里?

最佳答案

为了使模块可检测,在commands 目录中添加一个__init__.py 文件:

> pwd                # make sure that you are in commands directory
.../commands/

> touch __init__.py # create __init__.py

在另一个 SO 线程中查看更多信息:What is __init__.py for?

关于python - Scrapy 自定义项目命令 : "ImportError: No module named commands",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30847603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com