Python 尝试从环境变量加载碎片设置时获取ModuleNotFoundError
我正在用Django项目运行Scrapy,并试图从Scrapy项目外部定义Scrapy设置。我正在使用Python 尝试从环境变量加载碎片设置时获取ModuleNotFoundError,python,django,scrapy,Python,Django,Scrapy,我正在用Django项目运行Scrapy,并试图从Scrapy项目外部定义Scrapy设置。我正在使用get\u project\u settings()查找环境变量SCRAPY\u settings\u模块。我已成功将其设置为scraper.crawling.crawling.settings,但当运行get\u project\u settings()时,我会看到错误: ModuleNotFoundError:没有名为爬行的模块 这是正确的,因为爬行是一个目录,而不是模块,设置是,我正试图将
get\u project\u settings()
查找环境变量SCRAPY\u settings\u模块
。我已成功将其设置为scraper.crawling.crawling.settings
,但当运行get\u project\u settings()
时,我会看到错误:
ModuleNotFoundError:没有名为爬行的模块
这是正确的,因为爬行
是一个目录,而不是模块,设置
是,我正试图将其指向该模块。是否有人能够帮助我,使获取项目设置
能够正确找到模块设置
下面是我正在使用的文件夹结构:
├───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
以下是my Djangosettings.py
中的设置,因此这是在启动服务器时设置的:
os.environ['SCRAPY\u SETTINGS\u MODULE']=“scraper.crawling.crawling.SETTINGS”
get\u project\u settings()
是从crawler\u process.py
中调用的,尽管我认为位置不是问题,因为它正在查看环境变量
我的sys.path
中已经有'C:\\Users\\georg\\Django\\Django scraper'
,它似乎可以访问scraping
fine,但随后尝试将scraper.crawing
作为一个模块
我希望这是足够的信息-这是我的第一篇帖子,所以如果还有其他需要的,请告诉我 我认为您需要在每个文件夹级别添加
\uuu init\uuuu.py
文件,以便python将其视为模块,django将能够导入它
├───django-scraper
| ├───django_scraper
| | └───settings.py
| │
| ├───__init__.py
| ├───scraper
| │ ├───crawling
| │ │ └───__init__.py
| │ │ └───crawling
| │ │ ├───__init__.py
| │ │ ├───spiders
| │ │ ├───settings.py
| | | └───crawler_process.py
您也有
spider
文件夹,它没有反映在路径中。我的坏,settings.py
实际上与spider
是同一层。我刚刚修改了图表以反映这一点,我想知道是否没有scrapy.cfg
可能与此有关。您好,Sreevardhan-这是我的第一个想法,我尝试将\uu init\uuuuuuuuuuuy.py
添加到每个文件夹中以将它们转换为包,但它似乎仍在试图将爬行
视为一个模块,而不是一个包。你能分享你的整个文件夹结构吗?我刚刚用完整的结构更新了这个问题。我仍然对此感到困惑,不知道为什么在爬行中定位设置.py
时会出现问题。