首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试从环境变量加载Scrapy设置时获取ModuleNotFoundError

尝试从环境变量加载Scrapy设置时获取ModuleNotFoundError
EN

Stack Overflow用户
提问于 2020-02-28 19:13:52
回答 1查看 103关注 0票数 0

我正在使用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

下面是我使用的文件夹结构:

代码语言:javascript
复制
├───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作为一个模块。

我希望这是足够的信息-这是我的第一篇文章,所以如果还有什么需要的话,请告诉我!

EN

回答 1

Stack Overflow用户

发布于 2020-02-29 00:16:22

我认为您需要在每个文件夹级别添加__init__.py文件,以便将其视为模块,并且django将能够导入它。

代码语言:javascript
复制
├───django-scraper
|   ├───django_scraper
|   |   └───settings.py
|   │
|   ├───__init__.py
|   ├───scraper
|   │   ├───crawling
|   │   │   └───__init__.py
|   │   │   └───crawling
|   │   │       ├───__init__.py
|   │   │       ├───spiders
|   │   │       ├───settings.py
|   |   |       └───crawler_process.py
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60450598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档