Python Scrapy无法工作 - "ImportError:没有名为settings的模块"

5

/usr/lib/python2.7/site-packages/scrapy中的scrappy库。
我的项目目录:

.../projects/scrapy                                       
.../projects/parser_module                                     
....../projects/parser_module/parser  
....../projects/parser_module/parser           
........../projects/parser_module/parser/spiders/.....     
........../projects/parser_module/parser/<files etc>   
....../projects/parser_module/scrapy.cfg

在目录.../projects/parser_module/中,我设置了命令scrapy crawl parser并获得了结果。
Traceback (most recent call last):                                                                   

 File "/usr/bin/scrapy", line 4, in <module>                                                         
   execute()                                                                                         
  File "/usr/lib/python2.7/site-packages/scrapy/cmdline.py", line 109, in execute  
  settings = get_project_settings() 
  File "/usr/lib/python2.7/site-packages/scrapy/utils/project.py", line 60, in get_project_settings  
    settings.setmodule(settings_module_path, priority='project')          
  File "/usr/lib/python2.7/site-packages/scrapy/settings/__init__.py", line 108, in setmodule        
    module = import_module(module)                                                                   
  File "/usr/lib64/python2.7/importlib/__init__.py", line 37, in import_module                       
    __import__(name)                                                                                 
ImportError: No module named settings  

请问您如何解决这个问题?

4个回答

5
为避免这种问题,请使用 scrapy startproject parser_module 创建您的项目文件夹。
现在,要解决您的问题,您可以重新开始或创建一个虚拟项目,并从中复制 setting.py。然后,您可能会发现此文件夹中缺少其他文件而导致下一个错误。
这是 scrapy 项目的典型结构。
.
├── scrapy.cfg
└── project_name
    ├── __init__.py
    ├── items.py
    ├── settings.py
    └── spiders
        └── __init__.py
            spider.py

2
@taifun,你的意思是修复人比修复代码更好的解决方案吗? - Frederic Bazin
感谢@Frederic Bazin。我现在明白了,需要正确使用命令创建Scrapy项目。否则,你可能会遇到麻烦,特别是与项目配置相关的问题。 - Muhammad Atif
1
不幸的是,在文档制作项目中,通过“startproject”命令仍然没有被提到作为首要任务。这就是为什么新用户会遇到麻烦,因为“第一眼”和“安装指南”都没有提到“startproject”命令。它只在基本概念的“命令行工具”中提到。当然,我没有事先查看那里是我的错,但仍然应该在最开始提到它。 - Konstantin Kozirev

1
尝试更改项目名称和相关设置以解决“ImportError:找不到模块名*.settings”的问题,在scrapy.cfg中进行。

0

我曾经遇到过同样的问题。通过删除 scrapy 项目目录中存在的 init.pyc 文件解决了该问题。


-1
我发现了一个问题,下面是解决方法:
我的项目名称是:superproject 我收到了一个错误信息 "ImportError: No module named project" 在我的settings.py文件中有一行代码 ROTATING_PROXY_BAN_POLICY = 'project.policy.BanPolicy' 警告!项目名称不同。在settings.py文件中,您的名称必须像superproject和依赖项一样。
如果将ROTATING_PROXY_BAN_POLICY = 'project.policy.BanPolicy'改为ROTATING_PROXY_BAN_POLICY = 'superproject.policy.BanPolicy',那么问题就解决了。

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