我正在使用Django项目运行Scrapy,并试图从Scrapy项目外部定义Scrapy设置。我使用的是get_project_settings(),它查找环境变量SCRAPY_SETTINGS_MODULE。我已经设法将其设置为scraper.crawling.crawling.settings,但是当运行get_project_settings()时,我会看到以下错误:
ModuleNotFoundError: No module named crawling。
这是正确的,因为crawling是一个目录,而不是我试图将其定向到的模块settings。是否有人能够帮助我使get_project_settings能够正确地找到模块settings
下面是我使用的文件夹结构:
├───django-scraper
| ├───django_scraper
| | ├───settings.py
| │ └───__init__.py
| ├───scraper
| │ ├───crawling
| │ │ └───crawling
| │ │ ├───spiders
| │ │ │ └───__init__.py
| | | ├───settings.py
| │ │ └───__init__.py
| │ ├───migrations
| │ │ └───__init__.py
| │ ├───templates
| │ │ └───scraper
| │ └───__init__.py下面是我的Django settings.py中的代码,所以这是在启动服务器时设置的:
os.environ['SCRAPY_SETTINGS_MODULE'] = 'scraper.crawling.crawling.settings'
get_project_settings()是从crawler_process.py内部调用的,尽管我认为位置不是问题,因为它无论如何都会查看环境变量。
我的sys.path中已经有了'C:\\Users\\georg\\Django\\django-scraper',它似乎可以很好地访问scraping,但随后试图将scraper.crawling作为一个模块。
我希望这是足够的信息-这是我的第一篇文章,所以如果还有什么需要的话,请告诉我!
发布于 2020-02-29 00:16:22
我认为您需要在每个文件夹级别添加__init__.py文件,以便将其视为模块,并且django将能够导入它。
├───django-scraper
| ├───django_scraper
| | └───settings.py
| │
| ├───__init__.py
| ├───scraper
| │ ├───crawling
| │ │ └───__init__.py
| │ │ └───crawling
| │ │ ├───__init__.py
| │ │ ├───spiders
| │ │ ├───settings.py
| | | └───crawler_process.pyhttps://stackoverflow.com/questions/60450598
复制相似问题