Scrapy ';导入错误:没有名为<;的模块;项目名称>;。设置';烟度试验
Scrapy ';导入错误:没有名为<;的模块;项目名称>;。设置';烟度试验,scrapy,Scrapy,scrapy crawl在我的项目中运行良好 在冒烟测试中,我抓取一个私有页面,并断言这些项目与预期一致 在我完成一个严肃的项目重构之前,一切都很顺利,对于冒烟测试,最终在setUp()中设置了一个env var,它实际上设置了os.environ['SCRAPY\u SETTINGS\u MODULE']='.SETTINGS' 设置此环境变量后,scrapy crawl抱怨'ImportError:No module named.settings' scrapy.cfg设置正确,除此烟雾测试
scrapy crawl
在我的项目中运行良好
setUp()
中设置了一个env var,它实际上设置了os.environ['SCRAPY\u SETTINGS\u MODULE']='.SETTINGS'
scrapy crawl
抱怨'ImportError:No module named.settings'
scrapy.cfg
设置正确,除此烟雾测试外,其他一切都正常os.environ.pop('SCRAPY设置\u模块')
就可以解决,但这感觉不对所以,请有人告诉我是什么原因导致了这个问题,什么是正确的方法来解决它,谢谢 我找到了原因: 在
scrapy crawl
scrapy执行scrapy.utils.project.get\u project\u settings
之前,如果未设置os.environ['scrapy\u settings\u MODULE']
则调用scrapy.utils.conf.init\u env
,其中项目主目录被添加到sys.path
通过设置此环境变量,scrapy gets的副本sys.path
project main dir没有路径,因此导入失败
弹出os.environ['SCRAPY\u SETTINGS\u MODULE']
将导致调用init\u env
,因此SCRAPY crawl
可以正常工作。另一种解决方法是将os.environ['PYTHONPATH']
设置为projectmaindir路径,scrapy稍后会在该路径中查找
我最后采用的方法是修改scrapy,禁用对os.environ['scrapy\u SETTINGS\u MODULE']
的检查,并始终执行init\u env
。最糟糕的代价是,每次执行scrapy crawl
时,scrapy都会查找一次项目主目录路径,这对我来说似乎不是什么大工作。并且该路径不会多次添加到sys.path
,因为它在追加之前已被选中
就这样,如果我在什么地方弄错了,请告诉我,谢谢