Scrapy项目spider导入items模块触发ModuleNotFoundError问题求助
问题根源
你追加到sys.path的相对路径与当前工作目录不匹配,导致Python模块搜索路径中不包含items.py所在的目录。你当前工作目录已经是内层的scrapy_test_project目录,再拼接scrapy_test_project/scrapy_test_project得到的路径实际不存在,自然无法识别items模块。
解决方案
方案1:动态配置模块搜索路径(适合直接运行spider脚本的场景)
替换你现有的sys.path相关代码,用文件绝对路径动态定位目录,不受工作目录影响:
import sys import os # 取当前quote_spider.py文件所在的spiders目录的父目录,即items.py所在的目录 current_file_path = os.path.abspath(__file__) spiders_dir = os.path.dirname(current_file_path) project_inner_dir = os.path.dirname(spiders_dir) sys.path.append(project_inner_dir) import scrapy from scrapy.crawler import CrawlerProcess from scrapy.utils.project import get_project_settings from items import TestItem
方案2:使用Scrapy标准导入规则(推荐)
如果你通过官方scrapy crawl命令启动爬虫,不需要手动修改sys.path,直接使用相对导入即可:
import scrapy from scrapy.crawler import CrawlerProcess from scrapy.utils.project import get_project_settings from ..items import TestItem
注意:该写法不支持直接单独运行quote_spider.py文件,必须通过Scrapy命令或项目根目录的启动脚本调用
方案3:绝对包名导入
将外层scrapy_test_project目录添加到系统环境变量PYTHONPATH中,之后可以直接用完整包名导入:
from scrapy_test_project.items import TestItem
内容的提问来源于stack exchange,提问作者Denzel Hooke
相关产品推荐
相关产品推荐

