python scrapy не работает — «Ошибка импорта: нет модуля с именем settings»

#python #scrapy

#python #scrapy

Вопрос:

обрывочная библиотека в /usr/lib/python2.7/site-packages/scrapy
каталог моего проекта:

 .../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  
  

Не могли бы вы, пожалуйста, сказать мне, как решить проблему?

Ответ №1:

чтобы избежать такой проблемы, создайте папку проекта с scrapy startproject parser_module

теперь, чтобы устранить вашу проблему, вам либо нужно начать все сначала, либо создать фиктивный проект с scrapy startproject для копирования setting.py из. Тогда, возможно, в следующей ошибке вы обнаружите другой отсутствующий файл в этой папке.

Это типичная структура проекта scrapy.

 .
├── scrapy.cfg
└── project_name
    ├── __init__.py
    ├── items.py
    ├── settings.py
    └── spiders
        └── __init__.py
            spider.py
  

Комментарии:

1. @taifun, вы имеете в виду, что исправление пользователей не является лучшим решением, чем исправление кода?

2. спасибо @Frederic Bazin. Теперь я понимаю, что нужно создать проект scrapy с правильным использованием command. В противном случае, скорее всего, у вас могут возникнуть проблемы, особенно проблемы, связанные с конфигурацией проекта

3. К сожалению, в документации, создающей проект с помощью startproject команды, все еще не упоминается в качестве первого, что нужно сделать. Вот почему у новых пользователей возникают проблемы, так как в «Первом взгляде» и «руководстве по установке» не упоминается startproject команда. Это упоминается только в «Инструменте командной строки» в разделе «Основные понятия». Конечно, это моя вина, что я не заглядывал туда раньше, но все же об этом следует упомянуть в самом начале.

Ответ №2:

Чтобы решить проблему «Ошибка импорта: нет модуля с именем *.settings», попробуйте изменить название проекта и связанные с ним настройки в scrapy.cfg

Ответ №3:

У меня была такая же проблема. Решаемая путем удаления файла init.pyc, который присутствовал непосредственно внутри каталога проекта scrapy

Ответ №4:

Я обнаружил проблему, далее решаем:

Название моего проекта: superproject

Я получил проблему «Ошибка импорта: нет модуля с именем project»

В моей settings.py строке was ROTATING_PROXY_BAN_POLICY = 'project.policy.BanPolicy' .

Внимание! Название проектов отличается. В settings.py ваших именах должно быть как superproject и зависимость.

Если переименовать ROTATING_PROXY_BAN_POLICY = 'project.policy.BanPolicy' В => ROTATING_PROXY_BAN_POLICY = 'superproject.policy.BanPolicy' , ТО prolem решал.