运行Scrapy的main_executor.py报No module named 'research'错误求助
问题成因
报错ModuleNotFoundError: No module named 'research'是Scrapy项目路径配置错误导致的。Scrapy的get_project_settings()方法启动时会自动搜索当前工作目录下的项目配置模块,你现在直接在内层research文件夹下运行main_executor.py,Python解释器的模块搜索路径里没有包含Scrapy项目的根目录,自然找不到名为research的项目模块,就会抛出这个错误。
排查解决步骤
按顺序操作即可:
- 先找对项目根目录
找到你项目里存放scrapy.cfg文件的文件夹,从你给的路径看,这个文件夹应该是C:\Users\khoih\OneDrive\Desktop\RA Files\CyberSite\research(外层的research文件夹,不是和main_executor.py同目录的内层同名research文件夹),所有启动操作都要以这个文件夹为工作目录执行。 - 正确启动脚本
打开终端切到上面找到的根目录,执行命令python research/main_executor.py即可,不要直接在IDLE里点开内层的脚本点运行按钮,IDLE默认会把脚本所在目录设为工作目录,路径层级不对必报错。 - 兼容直接运行脚本的修改方案
如果想不管在哪运行这个脚本都不报错,直接在main_executor.py最开头加路径注入代码,修改后的完整代码如下:
import sys from pathlib import Path # 自动把Scrapy项目根目录加入Python模块搜索路径 sys.path.append(str(Path(__file__).parent.parent.resolve())) from scrapy.utils.project import get_project_settings from scrapy.crawler import CrawlerProcess setting = get_project_settings() process = CrawlerProcess(setting) for spider_name in process.spiders.list(): print(f"Running spider {spider_name}") process.crawl(spider_name, query="dvh") # query dvh为项目内自定义传参 process.start()
- 配置文件校验
打开根目录下的scrapy.cfg文件,确认[settings]段的配置如下,模块名写错也会触发同类报错:
[settings] default = research.settings
补充:如果按以上步骤操作完还是报错,把整个项目文件夹从OneDrive同步目录移到磁盘根目录比如
C:\CyberSite再试,Windows下同步盘的文件锁、路径过长问题也可能导致模块加载失败。
内容的提问来源于stack exchange,提问作者Khoi Hoang
相关产品推荐
相关产品推荐

